这个问题在stackoverflow上被问了几次。但是,我要尝试做的有点不同。
我正在尝试将python移植到QNX。使用python c API编译所有源文件并将其静态链接到“ Hello World”脚本。
我在struct模块上遇到了问题。我尝试将结构编译到共享库中,并将其放置在python指定的exec_prefix路径中。当我尝试导入它时,它会尝试加载模块,但会抱怨未知符号。
它说类似
未知符号:_PyUnicode_FormatAdvancedWriter引用 _struct.so
我收到很多类似这样的未知符号错误。我包括了所有这些未知符号的头文件和源文件,最终引发了其他未知符号错误。
我可能做的事情完全错了。关于如何链接它们的任何想法?
答案 0 :(得分:0)
自从找出解决方法后,我正在回答自己的问题。如果其他人遇到相同的问题,则必须在链接时将所有符号导出到动态符号表。为此,您必须将标志-E
传递给链接器,即-Wl, -E
。那应该解决问题。
这是特定于qcc的标志,因此,如果您在gcc中遇到此问题,可以尝试将--whole-archive标志传递给链接器。