在linux中链接到不同的.so文件
我正在尝试编译一个软件,它有标准的构建过程,例如在linux中链接到不同的.so文件,linux,build-process,Linux,Build Process,我正在尝试编译一个软件,它有标准的构建过程,例如 configure make make install 软件需要一个库,例如libreq.so,它安装在/usr/local/lib中。但是,我的问题是,我想构建软件,并将其与安装在/home/user/mylibs中的同一个库的不同版本相链接(我也有库的源代码) 我的问题是,如何编译软件并将其链接到/home/user/mylibs中的库,而不是/usr/local/lib中的库 我尝试将“LD_LIBRARY_PATH”设置为包含/home
configure
make
make install
软件需要一个库,例如libreq.so,它安装在/usr/local/lib中。但是,我的问题是,我想构建软件,并将其与安装在/home/user/mylibs中的同一个库的不同版本相链接(我也有库的源代码)
我的问题是,如何编译软件并将其链接到/home/user/mylibs中的库,而不是/usr/local/lib中的库
我尝试将“LD_LIBRARY_PATH”设置为包含/home/user/mylibs,但没有成功
谢谢 尝试使用设置到实际文件。当您有一个
autoconf
配置脚本时,请使用:
CPPFLAGS=-I/home/user/include LDFLAGS=-L/home/user/mylibs ./configure ...
这会将指定目录添加到搜索标题的目录列表中(在使用库时通常是必需的),并将其他指定目录添加到搜索实际库的列表中
我一直在使用它——在我的工作机器上,
/usr/local
由MIS“维护”,99.9%的时间都包含过时的代码(并且是NFS挂载的,只读的),所以我努力避免使用它,并在/usr/gnu
下维护我自己的、更接近最新的软件版本。它适合我。LD\u LIBRARY\u路径用于在运行时查找动态链接库。在编译时,您应该向gcc/g++添加-L参数,以指定*.so文件位于哪个目录中。您还需要使用-l添加库名(其中库名为libNAME.so)
重要!要进行链接,不仅需要libNAME.so文件,还需要libNAME.a
运行应用程序时,不要忘记将目录添加到LD_库路径。将
/home/user/mylibs
添加到LD_库路径时,是否将其添加到现有路径的前端或末端?将按顺序搜索标记,以便您希望您的标记首先出现在列表中
此外,许多使用
configure
的标准构建环境将允许您为每个所需的片段指定一个精确的库。您必须运行/configure--help
,但您应该看到类似--使用BLAH lib=/path/to/your/library
或类似工具。谢谢,但这似乎不会覆盖构建过程中的/usr/local/lib版本,是否有一些参数可以传递给配置,以告诉它在特定位置使用库?@重要!要进行链接,不仅需要libNAME.so文件,还需要libNAME.a。->你不是在说windows(.dll+.lib)吗。是一个静态库,根本不需要。