.so not found 的坑与解决方案
2019年3月22日
前段时间用 Go
写一个仿真测试,需要用到 cgo
来使用一些 C/C++
写的库。
在我的 MacBook 里面,可以很顺利跑测试。但是,改到 Ubuntu 16.04
的服务器上就炸了。
老是提示 XXXX.so not found
。
这就奇怪了!明明用 go
编译和链接库都成功了,但是实际上运行还是不行。
试过了加 CGO_ENABLED="1"
环境变量也不可以,程序放在 .so
的相同目录下运行也不行,ldd
也是提示 not found
。
最后发现问题之所在,一定要运行一次
1 | ldconfig |
更新一下动态链接库名字列表,程序在运行的时候才可以顺利找到SO库。
注意!编译链接和运行时候的链接是两码事儿,运行的时候还是得看
/etc/ld.so.cache
的!
哎,真是坑惨了。
除非注明,麦麦小家文章均为原创,转载请以链接形式标明本文地址。