2017-06-16 73 views
1

全部,自定义Python构建 - time.so:未定义的符号:PyExc_ValueError

我正在为嵌入式系统开发一个新的C++项目。系统的一部分是一些遗留的Python代码,我们也需要进行接口。我已经使用Python提供的各种PyImport_ImportModule函数等将C++原型化为Python接口,并在我的主机系统(Ubuntu 64位17.04)上对其进行了测试。

但是,新项目中的构建系统也尝试构建所有依赖项,因此它从源代码构建Python 2.7.13。我看到的问题是过去与主机系统一起工作的接口代码Python与新建的源Python不兼容。我看到的错误是“time.so:未定义的符号:PyExc_ValueError”,而我试图从C++调用的.py文件确实将导入时间作为前几行之一。我检查了time.so,它出现在定制的Python中,我更新了LD_LIBRARY_PATH以包含它,但这并没有帮助。在Python的构建结束时,我确实看到了这些警告,所以也许其中一个是相关的?

 
Python build finished, but the necessary bits to build these modules were not found: 
_bsddb    _sqlite3   _ssl    
_tkinter   bsddb185   bz2    
dbm    dl     gdbm   
imageop   readline   sunaudiodev  
zlib             

任何人都可以建议接下来要做什么?我们不启用任何特殊选项或在我们从源代码构建的Python中使用任何非标准标志(可能需要一些额外的设置)?

回答

1

这通常发生在两种:

  • 需要干净的构建或
  • 错误libpython LIB被链接。我建议先尝试一下clean build,然后仔细检查你的链接标志(确保你为Python-2.7构建并链接到Python-2.7,而不是说Python-3。*等)。

另外,请参阅此讨论中,它看起来像一个非常类似的问题:https://www.panda3d.org/forums/viewtopic.php?t=13222

编辑:这也可能是相关的:undefined symbol: PyExc_ImportError when embedding Python in C

+0

感谢您的答复,现在想这些建议。 – SeanLabs