64ビットMac OS X Lionを使用して、基本的にXcodeでインストールされるnasmとldを使用して基本アセンブリファイルを実行しようとしています。Mac OS Xでldを使用してアセンブリファイルをリンクできません
文字を印刷するアセンブリファイルを作成しました。これをnasmを使用してビルドしました。私は、LDとリンクして行くとき
nasm -f elf -o program.o main.asm
しかし、それはかなりの数のエラー/警告で失敗します。だから、
ld -o program program.o
ld: warning: -arch not specified
ld: warning: -macosx_version_min not specificed, assuming 10.7
ld: warning: ignoring file program.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: symbol dyld_stub_binder not found, normally in libSystem.dylib
ld: entry point (start) undefined. Usually in crt1.o for inferred architecture x86_64
、私はいくつかを是正しようとしましたこれらの問題のうち、どこにも行きませんでした。
は、ここで私が試したものの一つだ:私は仕事だろうと思ったが、私は間違っていた
ld -arch i386 -e _start -o program program.o
。
どのようにオブジェクトファイルをnasmとldが一致する互換アーキテクチャにするか?
また、どのように(今、私は多くの良いを行うにはいないようです_start
の上にある.section text
でglobal _start
を、使用しています。)プログラムのエントリポイントを定義し
アイムあなたが正常にオブジェクトファイルをバイナリファイルにリンクする方法について混乱しています。
助けてください。
は、あなたの代わりにLDのGCCを使用してリンクしようとしたことがありますか?多くの場合、Cランタイムと標準ライブラリ(例えば、エントリポイントとして 'main'を使います)を使用するほうが簡単です。もう一つは 'elf'の代わりに' mach'オブジェクトファイル形式を使うことです。 – user786653