如何静态链接python解释器?

时间:2018-07-20 14:32:57

标签: python c python-3.x linker-errors qnx-neutrino

这个问题在stackoverflow上被问了几次。但是,我要尝试做的有点不同。

我正在尝试将python移植到QNX。使用python c API编译所有源文件并将其静态链接到“ Hello World”脚本。

我在struct模块上遇到了问题。我尝试将结构编译到共享库中,并将其放置在python指定的exec_prefix路径中。当我尝试导入它时,它会尝试加载模块,但会抱怨未知符号。

它说类似

  

未知符号:_PyUnicode_FormatAdvancedWriter引用   _struct.so

我收到很多类似这样的未知符号错误。我包括了所有这些未知符号的头文件和源文件,最终引发了其他未知符号错误。

我可能做的事情完全错了。关于如何链接它们的任何想法?

1 个答案:

答案 0 :(得分:0)

自从找出解决方法后,我正在回答自己的问题。如果其他人遇到相同的问题,则必须在链接时将所有符号导出到动态符号表。为此,您必须将标志-E传递给链接器,即-Wl, -E。那应该解决问题。

这是特定于qcc的标志,因此,如果您在gcc中遇到此问题,可以尝试将--whole-archive标志传递给链接器。