使用 Nuitka 编译的脚本引发分段错误
Script compiled with Nuitka, raises Segmentation Fault
我有一个脚本 'test.py',它导入了一些“.so”模块并依赖于它们。 '.so' 模块存在于文件夹 'COMPILED' 中,我已将其绝对路径添加到 PYTHONPATH 环境变量中。所以,现在当我 运行 它 - “$ python test.py” - 它 运行 很棒。当我使用 Nuitka 编译它时 - "$ nuitka --recurse-all test.py" - 它也会编译并生成一个 'test.exe' 可执行文件,现在当我执行它而不是导入模块和 运行ning 通常会引发 'Segmentation Fault'
最后,我想补充一点,我也使用 Nuitka 生成了“.so”文件——它们基本上是模块。它们在正常未编译的 python 下工作起来就像梦一样,但是一旦我用 Nuitka 编译 test.py .... KABOOM!
此问题之前已发布:
但是还没有人回答,我不能评论或通知那里的人,因为我刚刚创建了我的帐户,所以我又问了一遍。这是先前询问的版本的 link:
python package complied with nuitka fails with segmentation fault
Directory Structure:
/PARENT_FOLDER
|______/COMPILED: <---- this folder contains all the '.so' files
| file1.so
| file2.so
| .
| .
|______test.py <---- here is the test.py script
好的!所以我的问题已经解决了。事实证明这是内存布局的一些问题,我从这里得到了一些提示:
http://www.freelists.org/post/nuitka-dev/Building-modules-separately-from-the-main-application,3
该页面基本上说使用 clang 和 nuitka 而不是 gcc 可以消除段错误。我正打算尝试一下,但我 运行 经常输入 "nuitka --help" 并遇到了这个选项“--lto(link 时间优化)”。我想试一试 - 注意,根据 --help 这需要 g++ - 所以而不是 运行
nuitka --recurse-all test.py
我运行
nuitka --lto test.py
并且生成的二进制文件在没有 'segmentation faults' 的情况下执行得很好。我也运行
nuitka --recurse-all --lto test.py
这也行得通 - 如果您想知道的话。这也被报告为 Nuitka 错误列表中的错误:
环境:
Nuitka 版本:0.5.18
gcc 版本:4.8.4
Ubuntu 14.04 64 位英特尔 corei5
我有一个脚本 'test.py',它导入了一些“.so”模块并依赖于它们。 '.so' 模块存在于文件夹 'COMPILED' 中,我已将其绝对路径添加到 PYTHONPATH 环境变量中。所以,现在当我 运行 它 - “$ python test.py” - 它 运行 很棒。当我使用 Nuitka 编译它时 - "$ nuitka --recurse-all test.py" - 它也会编译并生成一个 'test.exe' 可执行文件,现在当我执行它而不是导入模块和 运行ning 通常会引发 'Segmentation Fault'
最后,我想补充一点,我也使用 Nuitka 生成了“.so”文件——它们基本上是模块。它们在正常未编译的 python 下工作起来就像梦一样,但是一旦我用 Nuitka 编译 test.py .... KABOOM!
此问题之前已发布:
但是还没有人回答,我不能评论或通知那里的人,因为我刚刚创建了我的帐户,所以我又问了一遍。这是先前询问的版本的 link: python package complied with nuitka fails with segmentation fault
Directory Structure:
/PARENT_FOLDER
|______/COMPILED: <---- this folder contains all the '.so' files
| file1.so
| file2.so
| .
| .
|______test.py <---- here is the test.py script
好的!所以我的问题已经解决了。事实证明这是内存布局的一些问题,我从这里得到了一些提示: http://www.freelists.org/post/nuitka-dev/Building-modules-separately-from-the-main-application,3
该页面基本上说使用 clang 和 nuitka 而不是 gcc 可以消除段错误。我正打算尝试一下,但我 运行 经常输入 "nuitka --help" 并遇到了这个选项“--lto(link 时间优化)”。我想试一试 - 注意,根据 --help 这需要 g++ - 所以而不是 运行
nuitka --recurse-all test.py
我运行
nuitka --lto test.py
并且生成的二进制文件在没有 'segmentation faults' 的情况下执行得很好。我也运行
nuitka --recurse-all --lto test.py
这也行得通 - 如果您想知道的话。这也被报告为 Nuitka 错误列表中的错误:
环境:
Nuitka 版本:0.5.18
gcc 版本:4.8.4
Ubuntu 14.04 64 位英特尔 corei5