Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.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++ 共享库:“;“自力更生”;和'g++-共享-o<;路径>;`?_C++_C_Gcc_Clang_Dynamic Linking - Fatal编程技术网

C++ 共享库:“;“自力更生”;和'g++-共享-o<;路径>;`?

C++ 共享库:“;“自力更生”;和'g++-共享-o<;路径>;`?,c++,c,gcc,clang,dynamic-linking,C++,C,Gcc,Clang,Dynamic Linking,我使用以下命令链接对象文件(hello.o)以生成共享库(libhello.so): 我在OSX上,g++实际上指向引擎盖下的clang++ 然后,当我使用 otool -L build/lib/libhello.so 输出的前两行是 build/lib/libhello.so: build/lib/libhello.so (compatibility version 0.0.0, current version 0.0.0) ... 这意味着依赖于libhello.so的任

我使用以下命令链接对象文件(
hello.o
)以生成共享库(
libhello.so
):

我在OSX上,
g++
实际上指向引擎盖下的
clang++

然后,当我使用

otool -L build/lib/libhello.so
输出的前两行是

build/lib/libhello.so:
    build/lib/libhello.so (compatibility version 0.0.0, current version 0.0.0)
    ...
这意味着依赖于
libhello.so
的任何程序都必须使用此相对路径引用
libhello.so
。(我已经使用与
libhello.so
链接的测试程序验证了这一点)

我的想法是,
-o
选项的值被设置为生成的
.so
文件的依赖项之一,因为如果我使用:

g++ -fPIC -shared -o /<absolute_path>/build/lib/libhello.so build/obj/src/hello.o
我的问题是:

  • 当与
    -shared
    一起使用时,
    -o
    是否有影响生成的共享库的“自依性”的副作用

  • 为什么共享库应该有一个指向自身的依赖项?(为了便于参考,我在
    /usr/local/lib
    中查找了一些共享库,它们都有绝对路径作为依赖项连接到自身。)

  • -o
    选项而言,在生成共享库时,这里的最佳实践是什么?是否为
    -o
    使用绝对路径

  • g++ -fPIC -shared -o /<absolute_path>/build/lib/libhello.so build/obj/src/hello.o
    
    build/lib/libhello.so:
        /<absolute_path>/build/lib/libhello.so (compatibility version 0.0.0, current version 0.0.0)
        ...