还记得当时怎么解决找不到linux库文件的问题的吗

还记得当时怎么解决找不到linux库文件的问题的吗,第1张

一般库文件问题大体两个原因

一,你的.so文件没有在 shared libtaty库 所以找不到

二, .so 文件 的 版本 和 要求的版本不对

1. ldd bwengine

2023 $ ldd bwengine

linux-vdso.so.1 =>  (0x00007ffdd95f6000)

libnsl.so.1 =>/lib/x86_64-linux-gnu/libnsl.so.1 (0x00007ff217e4d000)

libdl.so.2 =>/lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff217c49000)

libpthread.so.0 =>/lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff217a2b000)

libstdc++.so.5 =>/usr/lib/x86_64-linux-gnu/libstdc++.so.5 (0x00007ff21774f000)

libm.so.6 =>/lib/x86_64-linux-gnu/libm.so.6 (0x00007ff217449000)

libgcc_s.so.1 =>/lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff217233000)

libc.so.6 =>/lib/x86_64-linux-gnu/libc.so.6 (0x00007ff216e6e000)

/lib64/ld-linux-x86-64.so.2 (0x00007ff218067000)

2. 假设找不到 /lib/x86_64-linux-gnu/libnsl.so.1

2024 $ file /lib/x86_64-linux-gnu/libnsl.so.1

/lib/x86_64-linux-gnu/libnsl.so.1: symbolic link to `libnsl-2.19.so'

3. 检查so文件的版本依赖

类似于"/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found"的错误之前也出现在了ubuntu上安装bw的时候。原来是系统自带的某些库的版本过高了(不得不安装了老版本的库才行)。

strings /lib/x86_64-linux-gnu/libcrypto.so.10|grep libcrypto.so

2026 $ strings /lib/x86_64-linux-gnu/libnsl.so.1|grep libnsl

libnsl.so.1

libnsl-2.19.so

4. 试图运行程序,提示"libc.so.6: version `GLIBC_2.14' not found"

./qmake: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./qmake)

运行 strings /lib64/libc.so.6 |grep GLIBC_ 查看依赖的版本

运行 rpm -qa |grep glibc 查看最新版本信息

glibc-static-2.12-1.80.el6_3.6.x86_64

glibc-headers-2.12-1.80.el6_3.6.x86_64

glibc-common-2.12-1.80.el6_3.6.x86_64

安装 ../configure --prefix=/opt/glibc-2.14

临时修改环境变量  export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH

最后测试程序是否可以运行

参见 : http://fanli7.net/a/bianchengyuyan/C__/20140412/490904.html

http://www.cnblogs.com/yingsi/p/3290958.html

如果在 Linux 中使用静态库时出现链接错误,提示找不到静态库中的符号,可能有以下几种原因:

缺少必要的依赖库:静态库中的某些符号可能依赖于其他库,如果这些依赖库未被链接到程序中,就会导致链接错误。可以通过检查编译和链接命令行,查看是否有缺少的依赖库。

静态库版本不匹配:静态库中的某些符号可能与程序中使用的符号版本不匹配,导致链接错误。可以尝试升级或者降级静态库的版本,或者使用相同版本的静态库重新编译程序。

静态库未正确安装:如果静态库未正确安装到系统中,可能会导致链接错误。可以检查静态库是否存在于系统库目录中,或者手动将静态库复制到程序所在目录下。

静态库未正确编译:如果静态库未正确编译,可能会导致链接错误。可以检查静态库的编译选项和编译命令是否正确,并尝试重新编译静态库。

综上所述,如果在 Linux 中使用静态库时出现链接错误,可以通过检查依赖库、版本、安装和编译等方面来解决问题。

原因是rcS

比/etc/profile先运行,rcS是一开机第一个运行的,这时候你的库还没有被连进来。

建议把./myXX

放在/etc/profile

的末尾。或者在./myXX这前source

/etc/profile.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8344765.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存