前段时间用 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 的!

哎,真是坑惨了。

除非注明,麦麦小家文章均为原创,转载请以链接形式标明本文地址。

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

本文地址:https://blog.micblo.com/2019/03/22/so-not-found-的坑与解决方案/