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)
...