当前位置: 技术问答>linux和unix
so共享库与ldd的简单问题(我不会)
来源: 互联网 发布时间:2015-12-17
本文导语: 各位大侠,鄙人近日遇到一个问题 背景: (1)、有两台机器,硬件和软件不大一样,均安装了Linux操作系统(假设为A,B)。 (2)、在A机器上开发了一个项目P,项目包含一系列的so共享库文件。 (3)、现需要将P...
各位大侠,鄙人近日遇到一个问题
背景:
(1)、有两台机器,硬件和软件不大一样,均安装了Linux操作系统(假设为A,B)。
(2)、在A机器上开发了一个项目P,项目包含一系列的so共享库文件。
(3)、现需要将P移植到B机器上去。
(4)、将P生成的所有so共享库拷贝到B机器上,路径与A机器一样。
(5)、项目P在A机器上能正常运行,但移植到B机器后就罢工了。
现象:
(1)、在项目P生成的所有so库里,有一个so库(设名字为lib.so),在B机器上无论如何也加载不上,运行ldconfig也无效,在/etc/ld.so.cache文件里就是看不到它的影子,而同目录下的其他库均在文件里有记录。
(2)、用ldd工具来观察,没想到连ldd都用不了,每次运行"ldd -v lib.so"均提示
“ldd: /lib/ld-linux.so.2 exited with unknown exit code (139)”。
鄙人在此跪等了,请各位高手多多指点,多多发表意见。如果分值太少就说,我倾所有分而求解。
背景:
(1)、有两台机器,硬件和软件不大一样,均安装了Linux操作系统(假设为A,B)。
(2)、在A机器上开发了一个项目P,项目包含一系列的so共享库文件。
(3)、现需要将P移植到B机器上去。
(4)、将P生成的所有so共享库拷贝到B机器上,路径与A机器一样。
(5)、项目P在A机器上能正常运行,但移植到B机器后就罢工了。
现象:
(1)、在项目P生成的所有so库里,有一个so库(设名字为lib.so),在B机器上无论如何也加载不上,运行ldconfig也无效,在/etc/ld.so.cache文件里就是看不到它的影子,而同目录下的其他库均在文件里有记录。
(2)、用ldd工具来观察,没想到连ldd都用不了,每次运行"ldd -v lib.so"均提示
“ldd: /lib/ld-linux.so.2 exited with unknown exit code (139)”。
鄙人在此跪等了,请各位高手多多指点,多多发表意见。如果分值太少就说,我倾所有分而求解。
|
把lib.so的路径加在/etc/ld.so.conf里.然后运行/sbin/ldconfig
|
操作系统有区别么?如果gcc版本差别较大,比如一个是3.2.2,一个是3.4,so文件是没有办法通用的吧.主要是libstdc++的动态库版本不一样.
还有一个原因是应用程序没有so共享库,可以设置 LD_LIBRARY_PATH环境变量.
还有一个原因是应用程序没有so共享库,可以设置 LD_LIBRARY_PATH环境变量.
|
目前怀疑是lib.so依赖的库不齐全
---------------------------
我也觉得是这个问题,不妨检查一下你那个so需要链接哪些系统库,然后核对一下A和B的系统库版本
---------------------------
我也觉得是这个问题,不妨检查一下你那个so需要链接哪些系统库,然后核对一下A和B的系统库版本