如何链接使用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