2016-02-02 52 views
1

我有一个脚本'test.py',它导入了一些'.so'模块并依赖于它们。 '.so'模块存在于'COMPILED'文件夹中,该文件夹的绝对路径已经添加到PYTHONPATH环境变量中。所以,现在当我运行它时 - “$ python test.py” - 它运行的很好。当我使用Nuitka编译它时 - “$ nuitka --recurse-all test.py” - 它编译也生成一个'test.exe'可执行文件,现在当我执行它而不是导入模块并正常运行时,它会引发一个'Segmentation Fault'用Nuitka编译的脚本引发了分段错误

最后,我想补充一点,我已经使用Nuitka生成了'.so'文件 - 它们基本上都是模块。他们像一个普通的未编译python一样工作,但只要我用Nuitka编译test.py ... KABOOM!

这个问题之前已经发布时间:

,但没有得到回答,我不能发表评论或通知某人那里,因为我刚刚创建的帐户,所以我再次问它。这里的链接到以前版本的问道: 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 
+0

一个SIGSEGV可能会导致很多事情,只是因为前面的问题提出了同样的问题不是我同样的原因。没有来源,我怀疑任何人都可以回答。就我个人而言,我会尝试追踪C++中的错误,然后从那里开始工作。使用'gdb'查看核心转储。 – cdarke

+0

或者,如果您不了解C++,请尝试减少'test.py'代码以找出问题。 – cdarke

+0

谢谢你的回复@cdarke :)。我很抱歉,但我没有提到作者在上一个问题上评论了他已经解决了这个问题的答案之一,但他没有提到如何。这就是我问的原因。尽管如此,我会给gdb一个尝试。和平! –

回答

1

好!所以我的问题已经解决了。原来,这是一些问题与内存布局和东西,我从这里得到了一些提示: http://www.freelists.org/post/nuitka-dev/Building-modules-separately-from-the-main-application,3

该页面基本上说,使用clang与nuitka而不是gcc删除段错误。我打算试试,但我随机键入“nuitka --help”,并遇到了这个选项“--lto(link time optimizations)”。我想给它一个尝试 - 请注意,根据--help这需要G ++ - 所以不是运行

nuitka --recurse-all test.py 

我跑

nuitka --lto test.py 

产生的二进制执行没有“分割就好了故障。我也跑

nuitka --recurse-all --lto test.py 

这也适用 - 如果你想知道。这也被报告为Nuitka的bug列表上的错误:

http://bugs.nuitka.net/[email protected]_message=msg%201799%20created%0Aissue%20238%20messages%20edited%20ok&@template=item

环境:

Nuitka版本:0.5.18

gcc版本:4.8.4

的Ubuntu 14.04 64位英特尔corei5