2016-09-17 8 views
5

प्रणाली मैं पर हूँ:jonesforth विभाजन गलती

/tmp/jonesforth $ cat /etc/issue 
Ubuntu 16.04.1 LTS \n \l 

यह एक 32-बिट प्रणाली है। annexia रिपोजिटरी से

क्लोन:

git clone git://git.annexia.org/git/jonesforth.git 

निर्माण ठीक से चला जाता है:

cd jonesforth 

/tmp/jonesforth $ make 
gcc -m32 -nostdlib -static -Wl,-Ttext,0 -o jonesforth jonesforth.S 

परीक्षण लेकिन पारित नहीं है:

/tmp/jonesforth $ make test 
test_stack_trace.f ... --- .test_stack_trace.test 2016-09-17 17:44:59.488492834 -0500 
+++ test_stack_trace.f.out 2016-09-17 17:33:11.171189490 -0500 
@@ -0,0 +1,6 @@ 
+TEST4+0 TEST3+0 TEST2+0 TEST+0 
+3 
+TEST4+0 TEST3+32 TEST2+0 TEST+0 
+TEST4+0 TEST3+0 TEST2+4 TEST+0 
+3 
+TEST4+0 TEST3+32 TEST2+4 TEST+0 
Makefile:34: recipe for target 'test_stack_trace.test' failed 
make: *** [test_stack_trace.test] Error 1 

jonesforth प्रारंभ हो रहा है एक विभाजन की ओर जाता है गलती:

/tmp/jonesforth $ cat jonesforth.f - | ./jonesforth 
Segmentation fault 

उत्तर

6

jonesforth के लिए Makefile प्रविष्टि से -Wl,-Ttext,0 हटाना:

jonesforth: jonesforth.S 
    gcc -m32 -nostdlib -static $(BUILD_ID_NONE) -o [email protected] $< 

मदद करने के लिए लगता है। निर्माण सफल होता है:

/tmp/jonesforth $ touch jonesforth.S 
/tmp/jonesforth $ make 
gcc -m32 -nostdlib -static -o jonesforth jonesforth.S 

परीक्षण पास:

/tmp/jonesforth $ make test 
test_stack_trace.f ... ok 
test_stack.f ... ok 
test_comparison.f ... ok 
test_assembler.f ... ok 
test_exception.f ... ok 
test_read_file.f ... ok 
test_number.f ... ok 

और यह शुरू होता है:

/tmp/jonesforth $ cat jonesforth.f - | ./jonesforth 
JONESFORTH VERSION 47 
14499 CELLS REMAINING 
OK 
+0

धन्यवाद इस पोस्ट करने के लिए एक बहुत। कई घंटे तक डेस्क के खिलाफ मेरे सिर को टक्कर लगी थी। –

संबंधित मुद्दे