.so文件导致的算法运行失败

在调solo时一直出现mportError: /home/student1/wmydexiangmu/detectron2-master/detectron2/_C.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN3c104cuda20getCurrentCUDAStreamEa问题,一开始我把注意力集中到最后面的问题,猜测是cuda与torch的版本问题(因为网上大家都是这么说的)这让我走了好久的弯路。
后来我注意到.so文件于是把ubuntu中的该文件与其他已经训练好的solo算法的.so文件的大小比较发现不同,说明问题出在了so文件上,而且如果把正确的so文件复制过来算法就可以运行成功了。这个so文件不是生成的而是项目里的,不知道为啥出了问题。
关于这个_C.cpython-37m-x86_64-linux-gnu.so文件做一下研究:.so文件是动态链接,可以直接运行的。直接运行是什么结果取决于so文件写的入口地址。
使用cython将py文件编译成so文件,可以封装保证安全性。将python文件打成so文件的目的就是为了保护源码。难以编辑。
makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。
可以找人家训练好的solo里的so文件替换自己的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值