我正在尝试使用emscripten从源代码构建Python 3.4。
我已下载并成功安装了emscripten。我在源树外创建了一个构建文件夹。这些是我到目前为止所采取的步骤:
运行configure:
$ emconfigure ../Python-3.4.3/configure --without-threads --without-pymalloc --enable-shared --disable-ipv6 --build=i686-linux-gnu
我注意到../Python-3.4.3/Include/pyport.h中的 LONG_BIT 检查与其中一个emscriptens标头中定义的#define SIZEOF_LONG
冲突,所以我已经注释了支票../ Python-3.4.3 / Include / pyport.h
成功运行configure后,我在构建文件夹中运行emmmake make
我通过运行file python
检查构建的python文件是否确实是LLVM字节码。在满足自己一切顺利的情况下,我尝试将生成的libpython3-4.so与字节码链接如下:
$ llvm-link libpython3.4.so python -o python.bc
我收到以下错误消息:
错误:链接名为' _Py_open_cloexec_works':符号倍增的全局变量 定义!
快速搜索源代码,显示符号 NOT 乘法定义:
$ 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:无法识别文件格式
我现在已经没想完了。任何人都可以帮我解决联系问题吗?
[[其他信息]]
答案 0 :(得分:0)
您可以使用强大的nm
代替objdump
。试试objdump -t you_file
或objdump -T you_file
。
示例:objdump -t lib.o