Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何链接我自己的.so文件而不是OS bundle.so文件?_C++_C_Hyperlink_Compilation_Libcurl - Fatal编程技术网

C++ 如何链接我自己的.so文件而不是OS bundle.so文件?

C++ 如何链接我自己的.so文件而不是OS bundle.so文件?,c++,c,hyperlink,compilation,libcurl,C++,C,Hyperlink,Compilation,Libcurl,我的构建命令 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/libmt.so/curl-7.60.0/libs/libcurl.so.4.5.0tests.cpp-otests .so文件存在 -rwxr-xr-x。1 pswluna开发者529763 2018-05-30 18:48

我的构建命令

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/libmt.so/curl-7.60.0/libs/libcurl.so.4.5.0tests.cpp-otests

  • .so文件存在

    -rwxr-xr-x。1 pswluna开发者529763 2018-05-30 18:48./curl-7.60.0/lib/.libs/libcurl.so.4.5.0

  • 但ldd的结果是。。。(请看第三行。)

  • 请帮帮我

    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/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\u OFFSET_BITS=64
    仅当您在64位操作系统上构建32位二进制文件时才有意义,但您没有这样做
  • -fPIC
    在构建主可执行文件时完全没有必要
  • 源代码和库在命令行上的顺序很重要,您的顺序是错误的
  • 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