python - 如何静态链接python解释器?

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

这个问题在 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/

相关文章:

python - 如何获取嵌套字符串列表中最长字符串的长度?

python - 识别当前正在执行哪个函数调用

python - pyspark 使用 partitionby 对数据进行分区

python - 什么时候会在 dict 上使用键值对作为 dict.update 方法?

python - 将多个文件连接成一个文件对象而不创建新文件

c++ - 将电影转换为 OpenNI *.oni 视频

c - 如何从c中的POSIX消息队列中删除或清除所有消息?

c - 在 C 中,当头指针位置未知时,在单个链表中插入节点

python - Joblib Parallel 不会终止进程

python - 停止 Pandas group by 中的处理循环