2016-05-02 14 views
0

verfolge ich ein Tutorial Online eine Weile zurück gemacht und sagt, esCygwin: Wenn man von einer 32-Bit-Datei zu 64 Bit

ld -s -o testing test.o

verwenden, um eine Ausgabedatei zu erstellen.

Ich erhalte den Fehler

ld: i386 architecture of input file 'test.o' is incompatible with i386:x86-64 output

wenn diese Linie zu laufen versuchen.

Test.o wurde von nasm -f elf test.asm erstellt. Es kann leider nicht im 64-Bit-Format erstellt werden.

Wie soll ich dagegen vorgehen? Vielen Dank für Ihre Zeit !!

Antwort

1

Sie können keine 64-Bit-Datei mit 32-Bit-Code ausführen.

Wenn Sie eine 32-Bit-ausführbar machen möchten, können Sie -m elf_i386 verwenden:

$ ld -s -o test test.o 
ld: i386 architecture of input file `test.o' is incompatible 
    with i386:x86-64 output 
$ ld -s -o test test.o -m elf_i386 
$ 
+0

Ich erhielt eine 'ld: unerkannt Emulationsmodus:' Fehler während dies zu tun, irgendwelche Ideen, warum? Ich bin völlig neu in Linux, so dass jede und alle Hilfe sehr geschätzt wird –

+0

@BeccaBohem Verwenden Sie "ld-V", um die Emulationsmodi aufzulisten, die von Ihrem Linker unterstützt werden. – Michael

+0

Wie haben Sie den test.o erstellt? – matzeri