- 主题:问个ldconfig的问题
问题的缘由是我自己从源码编译了一个wxWidgets,然后安装到了/opt/wxWidgets.
官网上面要求make install之后要执行一下ldconfig.这个的目的是为了更新/etc/ld.so.conf
问题
1.但是,我现在并没有装到默认位置,这行这个ldconfig是不是就没有意义了
2.我设置了一个环境变量LD_LIBRARY_PATH指向了/opt/wxWidgets/lib,那么这个时候系统应该能找到/opt/wxWidgets/lib下面的lib了是吧?
3.第2点的做法,和我link /opt/wxWidgets/lib下面的lib到/usr/lib是一样的结果?
4.上面所有的事情都是系统运行的时候找lib,但是如果我编译另外一个程序,需要link这些lib,该指定-L的还得指定,这个和上面是独立的两件事情?
5.回到ldconfig,我用ldconfig -v,是找不到/opt/wxWidgets/lib下面的lib的,那么有什么办法能list我系统里所有的lib?
谢谢
--
FROM 43.206.160.*
如果您没有将wxWidgets安装到默认位置,那么执行ldconfig确实可能没有意义。ldconfig的作用是为系统链接器动态库缓存(shared library cache)更新新的库路径信息。如果您使用非默认位置,您需要手动指定额外的路径信息才能让编译器和链接器在编译和链接时找到所需的wxWidgets库文件。
是的,如果您设置了环境变量LD_LIBRARY_PATH指向了/opt/wxWidgets/lib,那么系统会在这个路径下寻找wxWidgets库文件。
都可以达到同样的结果,区别在于前者是通过设置环境变量使得操作系统知道wxWidgets库的位置,而后者则是直接将wxWidgets库文件拷贝到操作系统默认寻找库文件的路径下。
是的,如果您编译另一个程序依赖于wxWidgets库,则需要通过指定-L选项来告诉编译器和链接器应该在哪里查找wxWidgets库文件。
您可以使用以下命令列出系统中所有的共享库文件:
sudo ldconfig -v -N | grep -v ^$'\t'
这个命令会列出共享库文件的完整路径。注意,您需要使用sudo权限运行此命令以获取完整列表。
【 在 lobachevsky 的大作中提到: 】
: 问题的缘由是我自己从源码编译了一个wxWidgets,然后安装到了/opt/wxWidgets.
: 官网上面要求make install之后要执行一下ldconfig.这个的目的是为了更新/etc/ld.so.conf
: 问题
: ...................
--
FROM 111.181.45.*
谢谢
还是最后一点
wxWidgets我装在/opt下面,ldconfig -v能把/opt下面的list出来吗?
如果不能,有什么办法能list出/opt下面的lib?
【 在 lambdago 的大作中提到: 】
: 如果您没有将wxWidgets安装到默认位置,那么执行ldconfig确实可能没有意义。ldconfig的作用是为系统链接器动态库缓存(shared library cache)更新新的库路径信息。如果您使用非默认位置,您需要手动指定额外的路径信息才能让编译器和链接器在编译和链接时找到所需的wxWidgets库文件。
: 是的,如果您设置了环境变量LD_LIBRARY_PATH指向了/opt/wxWidgets/lib,那么系统会在这个路径下寻找wxWidgets库文件。
: 都可以达到同样的结果,区别在于前者是通过设置环境变量使得操作系统知道wxWidgets库的位置,而后者则是直接将wxWidgets库文件拷贝到操作系统默认寻找库文件的路径下。
: ...................
--
FROM 43.206.160.*
1 不到万不得已,不要往OS里装东西,万一系统崩了,连条退路都没有,只能重装。如果是在工作用的服务器上,一般也没有权限。
2 LIBRARY_PATH是compile时候搜索lib用的,LD_LIBRARY_PATH是程序runtime时候用的。
3 LIBRARY_PATH之外,另一个办法是export LDFLAGS="-L/path/to/lib -l<libname>"
【 在 lobachevsky 的大作中提到: 】
: 问题的缘由是我自己从源码编译了一个wxWidgets,然后安装到了/opt/wxWidgets.
: 官网上面要求make install之后要执行一下ldconfig.这个的目的是为了更新/etc/ld.so.conf
: 问题
: ...................
--
FROM 73.15.220.*
LIBRARY_PATH我一般是在makefile或者等同的地方去指定
【 在 xibaomo 的大作中提到: 】
: 1 不到万不得已,不要往OS里装东西,万一系统崩了,连条退路都没有,只能重装。如果是在工作用的服务器上,一般也没有权限。
: 2 LIBRARY_PATH是compile时候搜索lib用的,LD_LIBRARY_PATH是程序runtime时候用的。
: 3 LIBRARY_PATH之外,另一个办法是export LDFLAGS="-L/path/to/lib -l<libname>"
: ...................
--
FROM 43.206.160.*
还有个找动态库的办法是在ELF里写个runpath、rpath,linker能干这个事情
--
FROM 114.240.244.*