背景
最近在做UOS的客户端开发。我的开发环境是UOS 1022的,打了一个deb给客户。但是客户的环境是UOS 1021。
根据客户的反馈,这个包安装后打不开。进一步了解后,程序启动后会出现segmentation fault (段错误)。
这个安装包在UOS 1022是可以正常使用的,为什么在UOS 1021上就异常了呢。
解决:
我将程序的依赖库,用二分法删除,发现只要删除依赖目录中的 libpthread.so ,程序就可以正常启动了。
我对比了UOS 1022和UOS 1021 的libpthread.so,版本都是一样的,是2.28,而且文件大小也一样,只有md5值不一样。
总结:
我又另外试验了UOS SP1,也有同样的问题:1022的libpthread.so 在UOS SP1中使用也会出现segmentation 段错误
看来这个库在不同的UOS是不一样的。
当然解决方法也很简单:我们在打包时,不把libpthread.so的放入deb包就可以了。