2012-03-21 23 views
7

64ビットシステムでNASMとGCCを使用して32ビットコードをアセンブルしようとしています。64ビットシステム上で32ビットコードをリンクするcrtn.oが見つかりません

/usr/bin/ld: cannot find crt1.o: No such file or directory 
/usr/bin/ld: cannot find crti.o: No such file or directory 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/libgcc.a when searching for -lgcc 
/usr/bin/ld: cannot find -lgcc 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/libgcc_s.so when searching for -lgcc_s 
/usr/bin/ld: cannot find -lgcc_s 
/usr/bin/ld: cannot find -lc 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/libgcc.a when searching for -lgcc 
/usr/bin/ld: cannot find -lgcc 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/libgcc_s.so when searching for -lgcc_s 
/usr/bin/ld: cannot find -lgcc_s 
/usr/bin/ld: cannot find crtn.o: No such file or directory 
collect2: ld returned 1 exit status 

私はUbuntuの11.10を実行している、と私はチェックして、私はlibcのがインストールされているかなり確信している:私は、次の2つのコマンド

nasm -f elf32 -g -F stabs coc.asm 
gcc -m32 -o coc coc.o 

NASMは罰金を行うように見えますが、LDは文句を使用しています。

+1

可能重複libに適切な32ビットを取得するためにgcc-multilibをインストールする必要があります。http://stackoverflow.com/questions/6329887/compiling-problems-([コンパイルの問題をcrt1.o初見つけることができません] can not-find-crt1-o) – user2284570

答えて

10

OSのスタートアップファイルを必要とする実行可能ファイルをアセンブルするのではなく、リンクします。

必要なファイルが含まれている、あなたはgcc-*-multilibがインストールされていないようです:http://packages.ubuntu.com/oneiric/amd64/gcc-4.6-multilib/filelist

+0

ありがとう、それは働いた –

0

私はUbuntuの11.10で非常によく似た問題を抱えていました。 See my question on SO about this。私にとって助けになったのは、crt*.o/lib/にリンクしていたことです。その後、私はこの問題に他の問題は一度もありませんでした。もう少しクルージングがありますが、私にとっては問題を解決しました。

2

は、あなたがの

関連する問題