对于不遵循libNAME.so命名约定的库,如何使用不带-l或硬编码路径的GCC进行链接
How to link using GCC without -l nor hardcoding path for a library that does not follow the libNAME.so naming convention?
我有一个共享库,希望使用GCC链接可执行文件。共享库的名称不是libNAME.so格式的非标准名称,因此我不能使用常用的-l选项。(它恰好也是Python扩展,因此没有"lib"前缀。)
我可以将库文件的路径直接传递到链接命令行,但这会导致库路径被硬编码到可执行文件中。
例如:
g++ -o build/bin/myapp build/bin/_mylib.so
有没有一种方法可以链接到这个库,而不会导致路径被硬编码到可执行文件中?
g++的-l选项有一个":"前缀,允许您使用具有非常规文件名的库。命令
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
相关文章:
- 如何确定我已使用非编码文件到达 EOF?
- 如何将更多文件夹添加到c++include路径
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- C++A*算法并不总是在路径中具有目标节点
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 从函数角度看ID到文件路径的内部与外部映射
- 在卡萨布兰卡形成编码参数的列表
- boost xml parsingl将xml的路径作为变量发送
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 如何使用cppcheck处理半相对包含路径
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 共享库依赖于具有硬编码路径的其他库
- 管理代码中的硬编码文件路径/名称
- qt中文件路径的编码
- 在Linux上使用文件路径字符串,使用什么编码
- 在静态库中硬编码的代码文件和头路径
- 将LLVM添加到我的Cmake项目中:为什么LLVM的Cmake文件中有硬编码路径?
- 从Makefile中的c可执行文件中删除硬编码的路径
- TagLib -如何处理UTF-8编码的文件路径
- 对于不遵循libNAME.so命名约定的库,如何使用不带-l或硬编码路径的GCC进行链接