2021-02-06-linux-找不到.so-.a的原因

世间千般好

关于找不到.so .a的问题,记录一下我遇到的情况

1、没有这个.so .a,

这种情况比较简单,下载源码编译、安装某些软件能拿到.so .a 就去做就可以了。

2、有这个.so .a 还是提示找不到

情况一:版本对不对,看一下提示使用的版本,和你当前拥有的版本是否能对的上

情况二:路径有没有导出?一般默认链接库使用/usr/lib,但是我们的库可能在其他地方,这种情况下需要导出。

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/path/to/your/lib/

情况三:你用的库和系统对不对?这种我在嵌入式遇到过,误拷贝了B平台的so到A平台,搞死人。

使用file命令查看该so和正常A平台的so文件展示的平台信息是否相同。

file xxx.so

比如这两个文件:

file /opt/toolchain/a8/arm-arago-linux-gnueabi/lib/libanl-2.12.2.so
/opt/toolchain/a8/arm-arago-linux-gnueabi/lib/libanl-2.12.2.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.16, stripped


file /opt/toolchain/a8/lib/libanl-2.12.2.so 
/opt/toolchain/a8/lib/libanl-2.12.2.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /arago-2012.10/lib/ld-linux.so.2, for GNU/Linux 2.6.16, stripped