我有一个共享库,我希望使用 GCC 链接可执行文件。共享库的名称不是 libNAME.so 形式的非标准名称,因此我不能使用通常的 -l 选项。(它恰好也是一个 Python 扩展,因此没有“lib”前缀。)
我可以将库文件的路径直接传递给链接命令行,但这会导致库路径被硬编码到可执行文件中。
例如:
g++ -o build/bin/myapp build/bin/_mylib.so
有没有办法链接到这个库而不导致路径被硬编码到可执行文件中?
我有一个共享库,我希望使用 GCC 链接可执行文件。共享库的名称不是 libNAME.so 形式的非标准名称,因此我不能使用通常的 -l 选项。(它恰好也是一个 Python 扩展,因此没有“lib”前缀。)
我可以将库文件的路径直接传递给链接命令行,但这会导致库路径被硬编码到可执行文件中。
例如:
g++ -o build/bin/myapp build/bin/_mylib.so
有没有办法链接到这个库而不导致路径被硬编码到可执行文件中?
有一个“:”前缀,允许您为您的库提供不同的名称。如果你使用
g++ -o build/bin/myapp -l:_mylib.so other_source_files
应该在您的路径中搜索 _mylib.so。
如果您可以在调用 g++ 时将共享库复制到工作目录,那么这应该可以:
g++ -o build/bin/myapp _mylib.so other_source_files
如果您使用的是 Unix 或 Linux,我认为您可以在您想要库的目录中创建指向库的符号链接。
例如:
ln -s build/bin/_mylib.so build/bin/lib_mylib.so
然后您可以使用-l_mylib
http://en.wikipedia.org/wiki/Symbolic_link