python3源代码是什么_libpython3.so与从python3.5.2源代码构建的libpython3.5m.so相比有什么区别?...

本文探讨了在Ubuntu14上从源代码构建Python3.5.2时遇到的问题,生成了libpython3.so(7.6kB)和libpython3.5m.so(12MB)。libpython3.so似乎是一个轻量级接口,而libpython3.5m.so包含了完整的Python符号。在尝试使用libpython3.so与boost_python链接时,出现了未解析的Python符号错误。通过`ldd -r`和`nm`命令分析,发现libpython3.5m.so包含所需符号,但libpython3.so不包含。作者提出了疑问:为何需要libpython3.so,以及如何正确使用这两个库。
摘要由CSDN通过智能技术生成

在我的应用程序中,我使用boost_python和python3.5.2。都是从Ubuntu14的源代码构建的。在

当我在Ubuntu中使用--with-shared选项从源代码构建python3.5.2时,我得到了libpython3.so(7.6kB)和{}(12MB)。我假设大的是真实的,小的可能是将调用转发到真实接口的东西。在

由于boost_python可能假设客户机与python(https://svn.boost.org/trac/boost/ticket/2615)进行链接,因此我将libpython3.so与我的应用程序链接起来。但当我运行它时,我得到了未解析的符号错误。在

ldd -r myapp或{}都列出了在nm -D libpython3.5m.so中可以找到的所有未解析的python符号。在# ldd -r lib/libboost_python3.so

linux-vdso.so.1 => (0x00007ffe767fb000)

libstdc+.so.6 => /usr/lib/x86_64-linux-gnu/libstdc+.so.6 (0x00007f130a7a3000)

libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f130a58d000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f130a1c8000)

libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1309ec2000)

/lib64/ld-linux-x86-64.so.2 (0x00007f130acf4000)

undefined symbol: PyExc_Imp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值