Linux 系统上有两类根本不同的 Linux 可执行程序。
- 第一类是静态链接的可执行程序。它们是“完整的”,静态可执行程序不依赖任何外部库就可以运行。
- 第二类则是动态链接的可执行程序,他们在执行时还需要动态地调用其他库,对其他库存在依赖,这样做的好处就是减小了自己程序的大小。而我们要关注的 文件就是一个包含要搜索的动态链接库目录的清单
对于此种情况有2种解决办法:
(1)在用源码安装时,用--prefix指定安装路径为/usr/lib。这样的话也就不用配置PKG_CONFIG_PATH
(2) 直接将路径/usr/local/lib路径加入到etc/ld.so.conf文件中。然后sudo ldconfig
动态装入器找到共享库要依靠两个文件:和
ldconfig是用来管理和更新系统动态链接库的工具,它会根据/etc/ld.so.conf文件中的路径创建软链接,并生成缓存文件/etc/ld.so.cache。
需要运行sudo ldconfig的情况:
1)当安装了新的库文件
2)修改/etc/ld.so.conf,增加了库的新的搜索路径
如果没做,可能会找不到刚安装的库。
默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录。
若在和之外的目录中添加库文件,而又不在中写入路径,此时可以用添加环境变量的做法让系统识别到库文件。
同时变量可以指示动态装入器首先检查某个目录,可以按照我们希望的优先级进行搜索,多个路径之间用冒号分隔;例如:
export LD_LIBRARY_PATH=/usr/local/lib/:/opt/lib
所有从当前 shell 启动的可执行程序都将使用 或 中的库,如果仍不能满足一些共享库相关性要求,则转回到 中指定的库。
方法一: 终端上输入以下命令,但是退出当前终端后就失效
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/xxxxx/lib
方法二: vim ~/.bashrc, 添加
export LD_LIBRARY_PATH=/opt/xxxxx/lib:$LD_LIBRARY_PATH
source ~/.bashrc

pkg-config向configure程序提供系统信息,比如软件的版本、库版本、库的路径等,
这些信息只是在编译其间使用。
ls /usr/local/lib/pkgconfig ,会看到许多的*.pc,
讯享网
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/includeName: Protocol Buffers
Description: Google's Data Interchange Format
Version: 3.0.0
Libs: -L${libdir} -lprotobuf -pthread -lpthread
Libs.private:
Cflags: -I${includedir} -pthread
Conflicts: protobuf-lite
configure就是靠这些信息判断你的软件版本是否符合要求。并且得到这些库所在的位置.
不用我说你也知道为什么会出现上面那些问题了吧。
所以要正确配置这个环境变量,我的配置是:
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig
讯享网
linux-vdso.so.1 (0x00007ffe8417a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f40101fd000)
libavcodec.so.57 => /usr/lib/x86_64-linux-gnu/libavcodec.so.57 (0x00007f400eadb000)
libavformat.so.57 => /usr/lib/x86_64-linux-gnu/libavformat.so.57 (0x00007f400e)
libavutil.so.55 => /usr/lib/x86_64-linux-gnu/libavutil.so.55 (0x00007f400e3f3000)
libopencv_highgui.so.4.5 => /usr/local/lib/libopencv_highgui.so.4.5 (0x00007f400e1dc000)
PATH 环境变量
bin

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/164932.html