首页> C#>如何使用不带-l或不遵循libNAME.so命名约定的库的硬编码路径的GCC进行链接?

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

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

例如:

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

有没有一种方法可以链接到该库而不会导致路径被硬编码到可执行文件中?

kbluck asked 2020-08-11T21:38:43Z
3个解决方案
69 votes

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

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

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

David Nehme answered 2020-08-11T21:38:53Z
2 votes

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

g++ -o build/bin/myapp _mylib.so other_source_files
Robert Gamble answered 2020-08-11T21:39:13Z
1 votes

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

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

然后,您可以使用-l_mylib

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

Chris Roland answered 2020-08-11T21:39:50Z
translate from https://stackoverflow.com:/questions/207069/how-to-link-using-gcc-without-l-nor-hardcoding-path-for-a-library-that-does-not