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