50

我有一个共享库,我希望使用 GCC 链接可执行文件。共享库的名称不是 libNAME.so 形式的非标准名称,因此我不能使用通常的 -l 选项。(它恰好也是一个 Python 扩展,因此没有“lib”前缀。)

我可以将库文件的路径直接传递给链接命令行,但这会导致库路径被硬编码到可执行文件中。

例如:

g++ -o build/bin/myapp build/bin/_mylib.so

有没有办法链接到这个库而不导致路径被硬编码到可执行文件中?

4

3 回答 3

75

有一个“:”前缀,允许您为您的库提供不同的名称。如果你使用

g++ -o build/bin/myapp -l:_mylib.so other_source_files

应该在您的路径中搜索 _mylib.so。

于 2008-11-11T15:42:23.237 回答
2

如果您可以在调用 g++ 时将共享库复制到工作目录,那么这应该可以:

g++ -o build/bin/myapp _mylib.so other_source_files
于 2008-10-16T01:40:43.083 回答
1

如果您使用的是 Unix 或 Linux,我认为您可以在您想要库的目录中创建指向库的符号链接。

例如:
ln -s build/bin/_mylib.so build/bin/lib_mylib.so

然后您可以使用-l_mylib

http://en.wikipedia.org/wiki/Symbolic_link

于 2008-10-16T01:41:49.430 回答