g ++ -g -m64 -D_FILE_OFFSET_BITS = 64 -fPIC -I./curl-7.60.0/include -I./jsoncpp-src-0.5.0/include/ ./jsoncpp-src-0.5.0 / libs / linux-gcc-4.4.7 / libjson_linux-gcc-4.4.7_libmt.so ./curl-7.60.0/lib/.libs/libcurl.so.4.5.0 tests.cpp -otests
Эта команда связывает необходимую библиотеку: ./curl-7.60.0/lib/.libs/libcurl.so.4.5.0
, но не организует использование этой библиотеки во время выполнения.
Вот команда, которую вы хотите:
g++ -g -m64 -I./curl-7.60.0/include -I./jsoncpp-src-0.5.0/include/ \
tests.cpp \
-L./jsoncpp-src-0.5.0/libs/linux-gcc-4.4.7 -ljson_linux-gcc-4.4.7_libmt \
-L./curl-7.60.0/lib/.libs -l:libcurl.so.4.5.0 \
-Wl,-rpath=$(pwd)/jsoncpp-src-0.5.0/libs/linux-gcc-4.4.7 \
-Wl,-rpath=$(pwd)/curl-7.60.0/lib/.libs \
-otests
Объяснение:
- Вы хотите использовать
-rpath
, чтобы сообщить динамическому загрузчику , где он должен искатьдля библиотек во время выполнения -D_FILE_OFFSET_BITS=64
только имеет смысл при создании 32-разрядного двоичного файла в 64-разрядной ОС, но вы этого не делаете -fPIC
совершенно не требуется при создании основного исполняемого файла. - Порядок источников и библиотек в командной строке имеет значение , ваш порядок неправильный .