arm debian マシン (raspberry pi) で単純な C プログラムをリンクしようとしていますが、ogject ファイルをリンクすると、リンカが件名にエラーを返します。
私のプログラムは次のように単純です
simple.c:
int main(){
int a = 2;
int b = 3;
int c = a+b;
}
私はそれをコンパイルします
$>gcc -o simple.obj simple.c
そしてそれをリンクします
$>ld -o simple.elf simple.obj
ld: simple.obj: access beyond end of merged section (33872)
理由がわかりません... elfファイルを読み込もうとするとobjdump -d
、セクションを逆コンパイルできません.text
(アドレス、値、.word
および0xが前にある値のみを出力します)が、バイナリデータは逆コンパイルされたものから取得したものsimple.obj
。
唯一の違いは、バイナリ データの読み込み開始 (および結果の) アドレスです。elf ファイルは 0x8280 から始まり、オブジェクト ファイルは 0x82a0 から始まります。
これはどういう意味ですか?
編集:
これは obj ファイルのダンプです: http://pastebin.com/YZ94kRk4
これは elf ファイルのダンプです: http://pastebin.com/3C3sWqrC
アセンブリ時間後にgccを停止させる-cオプションでコンパイルしようとしましたが(リンク部分はすでに実行されています)、別の問題があります:オブジェクトファイルに_startセクションがないと言われています...
新しいダンプは次のとおりです。
simple.obj: http://pastebin.com/t0TqmgPa
simple.elf: http://pastebin.com/qD35cnqw