一、链接库
动态库的搜索路径搜索的先后顺序是:
-
1.编译目标代码时指定的动态库搜索路径;
-
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
-
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
-
4.默认的动态库搜索路径/lib
-
5.默认的动态库搜索路径 /usr/lib。
LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。
设置环境变量和查看环境变量:export
export LD_LIBRARY_PATH = `pwd` //export 变量名=变量值
应用程序输出报错:error while loading shared libraries:libxxx.so:cannot open shared object file: No such file or directory
最糟糕的解决方式:把需要的库复制到/usr/lib目录下
sudo cp 库名 /usr/lib
这需要root权限,只是在开发机上的root用户里装了环境,这个动态库并不会被打包到可执行程序的同级目录下,从而导致打包好的程序在其他linux环境下不可用,依然缺动态库。

本文介绍了Linux系统中动态库的搜索路径,包括编译时指定路径、LD_LIBRARY_PATH环境变量、配置文件指定路径及默认路径。讨论了错误处理方式,如当应用程序找不到共享库时的错误信息,并指出直接将库复制到/usr/lib的解决方法并不理想,因为这会导致程序在其他环境中不可用。重点强调了正确配置动态库搜索路径和环境变量的重要性。

5084

被折叠的 条评论
为什么被折叠?



