Archive for 七月, 2011
linux下动态连接库找不到解决方案
多少linux开发,测试人员在搭建环境的时候,对linux下连接动态库的问题非常恼怒;作为一面测试人员的我,对此也不例外;
后来在网上差了很多关于这方面的资料,寻找到了一些思路,并解决了自己的难题,并做点总结:
运行时使用非标准位置/usr/lib和/lib下的库的方式有三种:
(1) 设置$LD_LIBRARY_PATH=库所在目录(多个目录用:分隔),系统加载工具ld.so/ld-linux.so将顺序搜索变量指定的目录。例如#$LD_LIBRARY_PATH=/usr/local/mysql/lib ./test_mysql
(2) 以root身份把库路径加入/etc/ld.so.conf或在/etc/ld.so.conf.d中创建特定的.conf文件,然后运行ldconfig更新/etc/ld.so.cache。例如:在/etc/ld.so.conf.d下创建文件mysql.conf写入/usr/local/mysql/lib
(3) 另一种办法就是把需要的库copy到/usr/lib或/lib,但这不是建议的方法,特别是尽量避免copy发到/lib。但这种方法可以在编译时免去用-L选项。
共享库搜索动态连接库的顺序一般是$LDLIBRARY_PATH,/etc/ld.so.cache, /usr/lib, /lib
具体案例:在运行python的时候,提示找不到ImportError: libmysqlclient.so.15: cannot open shared object file: No such file or directory
解决方案:1.locate libmysqlclient.so.15//找出系统动态链接库libmysqlclient.so.15的位置
2.使用root用户把动态链接库libmysqlclient.so.15拷贝到目录/sur/lib下或者是/lib下;
简单的两部就解决了问题。