在Ubuntu上使用emscripten编译Python 3.4(链接错误)
我正在尝试从源代码构建Python3.4,使用 我已下载并成功安装了emscripten。我已在源目录树外创建了一个生成文件夹。到目前为止,我已经采取了以下步骤:在Ubuntu上使用emscripten编译Python 3.4(链接错误),python,build,llvm,emscripten,Python,Build,Llvm,Emscripten,我正在尝试从源代码构建Python3.4,使用 我已下载并成功安装了emscripten。我已在源目录树外创建了一个生成文件夹。到目前为止,我已经采取了以下步骤: 运行配置: $emconfigure../Python-3.4.3/configure--不带线程--不带pymalloc--启用共享--禁用ipv6--构建=i686 linux gnu 我注意到../Python-3.4.3/Include/pyport.h中的LONG\u位检查与其中一个emscriptens头文件中定义的\de
$emconfigure../Python-3.4.3/configure--不带线程--不带pymalloc--启用共享--禁用ipv6--构建=i686 linux gnu
\define SIZEOF\u LONG
冲突,因此我已注释掉了签入../Python-3.4.3/Include/pyport.hemmmake
filepython
检查构建的python文件是否确实是LLVM字节码。在确信一切正常后,我尝试将生成的libpython3-4.so与字节码链接,如下所示:$llvm链接libpython3.4.so python-o python.bc
我收到以下错误消息:
错误:链接名为“\u Py\u open\u cloexec\u works”的全局变量:符号乘法
定义
快速搜索源代码显示符号为未定义的乘法:
$ grep -rnw ../Python-3.4.3 -e "_Py_open_cloexec_works" --include=\*.{c,h}
../Python-3.4.3/Python/fileutils.c:33:int _Py_open_cloexec_works = -1;
../Python-3.4.3/Python/fileutils.c:784: atomic_flag_works = &_Py_open_cloexec_works;
../Python-3.4.3/Modules/posixmodule.c:7702:extern int _Py_open_cloexec_works;
../Python-3.4.3/Modules/posixmodule.c:7725: int *atomic_flag_works = &_Py_open_cloexec_works;
../Python-3.4.3/Modules/_io/fileio.c:210:extern int _Py_open_cloexec_works;
../Python-3.4.3/Modules/_io/fileio.c:232: int *atomic_flag_works = &_Py_open_cloexec_works;
因此,我在libpython3.4.So上运行nm
,检查导出的符号,并得到以下错误消息:
nm:libpython3.4.so:无法识别文件格式
我现在已经没有主意了。有人能帮我解决链接问题吗
[[其他信息]]
- clang版本3.6.0
- LLVM版本3.6.0svn
objdump
而不是nm
。尝试objdump-t you_文件
或objdump-t you_文件
示例:
objdump-tlib.o
我刚刚检查了生成的.so文件的文件类型。结果是它的LLVM位代码,所以nm和objdump都不能识别文件格式。