linux共享路径是哪个,Linux共享库路径配置

linux共享路径是哪个,Linux共享库路径配置
电脑迷
Linux共享库路径配置
Linux下不到共享库⽂件的典型现象为明明已经安装某个软包(如libnet,MySQL),编译链接可以正常进⾏,但是在运⾏时出现
如“error while loading shared libraries: libnet.so.1:cannot open shared object file :No such file or directory”的错误提⽰。
原因是Linux下的共享库路径配置不正确。默认的linux共享库搜索路径为/lib和/usr/lib两个⽬录(不包含⼦⽬录),若共享库不在这两个路径(最典型的就是/usr/local/lib),不能被⾃动动态链接到,解决⽅法有四种:
1,链接时使⽤静态库(.a⽂件)。在g++命令上写⼊改.a⽂件的完整路径。
2,修改LD_LIBRARY_PATH环境变量。(临时有效,且有时候没有效果)
3,将库⽂件复制到可以搜索到的路径⾥⾯,这样⽐较狠,但是可能导致⼀些后即问题。
4,添加搜索路径,使⽤ldconfig命令(下⾯详细介绍)。
添加搜索路径⽅法步骤:
845主板1,先到官⽹下载对应的源码版本编译安装软件包(make install)。
马明龙
2,使⽤locate命令到该库的被默认安装的路径,使⽤⽅法是先⽤updatedb更新⼀下locate命令的索引库,然后“locate libnet.so”查就可以了,在这⾥我发现,⾃动编译安装的库⽂件被放在了/usr/local/lib⽬录。东莞外博会
3,修改/etc/f,添加路径。在CentOS 6.3下我看到这个⽂件实际上是包含了/etc/f.d/这个⽬录下的所有.conf⽂件,因此我们可以在这个路径下⾯创建⼀个新的⽂件,其中写上诸如“/usr/local/lib”、“/usr/local/mysql/lib”的路径,保存退出。
4,切记⼀定要主动执⾏命令:ldconfig,它会更新记录了系统中有哪些so⽂件的缓存⽂件(/etc /ld.so.cache)
转载请注明出处
回龙观北郊医院ldconfig⼏个需要注意的地⽅ 1. 往/lib和/usr/lib⾥⾯加东西,是不⽤修改/etc/f的,但是完了之后要调⼀下ldconfig,不然这个library会不到 2. 想往上⾯两个⽬录以外加东西的时候,⼀定要修改/etc/f,然后再调⽤ldconfig,不然也会不到 ⽐如安装了⼀个mysql到/usr/local/mysql,m
ysql有⼀⼤堆library在 /usr/local/mysql/lib下⾯,这时就需要在/etc/f下⾯加⼀
⾏/usr/local/mysql/lib,保存 过后ldconfig⼀下,新的library才能在程序运⾏时被到。 3. 如果想在这两个⽬录以外放lib,但是⼜不想在/etc/f中加东西(或者是没有权限加东西)。那也可以,就是export⼀个全局变 量LD_LIBRARY_PATH,然后运⾏程序的时候就会去这个⽬录中library。⼀般来讲这只是⼀种临时的解决⽅案,在没有权限或临时需要的时候使⽤。 4. ldconfig做的这些东西都与运⾏程序时有关,跟编译时⼀点关系都没有。编译的时候还是该加-L就得加,不要混淆了。 5. 总之,就是不管做了什么关于library的变动后,最好都ldconfig⼀下,不然会出现⼀些意想不到的结果。不会花太多的时间,但是会省很多的事。阿西莫夫最新科学指南

本文发布于:2024-09-22 12:51:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/214728.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:路径   编译   没有   共享   时候
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议