如何使用不使用-l的GCC链接或不遵循libNAME.so命名约定的库的硬编码路径?

StackOverflow https://stackoverflow.com/questions/207069

我有一个共享库,我希望将可执行文件链接到使用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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top