2

这个问题在stackoverflow上被问过几次。但是,我想做的有点不同。

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

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

它说类似

未知符号:_struct.so 引用的 _PyUnicode_FormatAdvancedWriter

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

我可能做错了什么。关于如何链接它们的任何想法?

4

1 回答 1

1

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

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

于 2018-08-02T13:56:49.253 回答