如何链接使用GCC没有-l也没有硬编码path不符合libNAME.so命名约定的库?
我有一个共享库,我希望链接使用GCC的可执行文件。 共享库的名称不是libNAME.soforms,所以我不能使用通常的-l选项。 (它恰巧也是一个Python扩展,所以没有'lib'前缀。)
我能够将path传递到库文件直接到链接命令行,但这会导致库path被硬编码到可执行文件中。
例如:
g++ -o build/bin/myapp build/bin/_mylib.so
有没有办法链接到这个库,而不会导致path硬编码到可执行文件?
有“:”前缀,允许你给你的图书馆不同的名字。 如果你使用
g++ -o build/bin/myapp -l:_mylib.so other_source_files
应该search_mylib.so的path。
如果你可以将共享库复制到工作目录,当g ++被调用时,这应该工作:
g++ -o build/bin/myapp _mylib.so other_source_files
如果你在Unix或者Linux上,我想你可以在你想要的库的目录下创build一个到库的符号链接。
例如:
ln -s build/bin/_mylib.so build/bin/lib_mylib.so
然后你可以使用-l_mylib
http://en.wikipedia.org/wiki/Symbolic_link