मैं this लेख, पढ़ रहा था और एक बिंदु पर यह मुझे इस एनएएसएम कार्यक्रम देता है:एनएएसएम/जीसीसी मुद्दा
; tiny.asm
BITS 32
GLOBAL main
SECTION .text
main:
mov eax, 42
ret
और निम्न कमांड को चलाने के लिए मुझसे कहता है:
ld: warning: option -s is obsolete and being ignored
ld: warning: ignoring file tiny.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
मैं पर कोई अनुमान कदम:
$ nasm -f elf tiny.asm
$ gcc -Wall -s tiny.o
मैं निम्नलिखित त्रुटि मिली क्या समस्या हो सकती है, और पढ़ने के लिए बिट्स लाइन बदल:
BITS 64
लेकिन तब जब मैं nasm -f elf tiny.asm
चलाने मैं:
tiny.asm:2: error: `64' is not a valid segment size; must be 16 or 32
मैं अपने मशीन पर काम करने के लिए कोड को कैसे संपादित कर
संपादित करें:
मैं टिप्पणियों से एलेक्स के सलाह मान ली और एक नए संस्करण डाउनलोड किया। हालांकि,
./nasm-2.09.10/nasm -f elf tiny.asm
शिकायत
tiny.asm:2: error: elf32 output format does not support 64-bit code
दूसरी ओर,
./nasm-2.09.10/nasm -f elf64 tiny.asm
gcc -Wall -s tiny.o
शिकायत
ld: warning: ignoring file tiny.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
जांचें कि क्या आपके पास नवीनतम नस्ल है और '-f elf64' आज़माएं। –
@Alex elf64 ने मुझे "अपरिचित आउटपुट प्रारूप" दिया। संस्करण के लिए, nasm -v ने मुझे "NASM संस्करण 0.98.40 (ऐप्पल कंप्यूटर, इंक बिल्ड 11) 3 नवंबर 2011 को संकलित किया" 0।98 ऐसा लगता है कि यह एक पुराना संस्करण हो सकता है लेकिन इसे 2011 में संकलित किया गया था, इसलिए यह पुराना अधिकार नहीं हो सकता है? ऐप्पल पुराने सॉफ्टवेयर क्यों शिप करेगा? एक डिफ़ॉल्ट असेंबलर जो 64-बिट प्लेटफ़ॉर्म पर 64-बिट कोड एकत्र नहीं कर सकता है? – math4tots
आपका बहुत पुराना है। मेरा प्रिंट "NASM संस्करण 2.09.10 जुलाई 15 2011 को संकलित"। नया संस्करण [यहां] है (http://www.nasm.us/pub/nasm/releasebuilds/2.09.10/)। –