3

それで、私はasmにいくつかの命令を書き、それらをコンパイルします。

nasm -f macho test.asm

ここで、nasm は obj ファイル、test.o を生成します

gcc test.o 

次のエラーが返されました:

  • ld: 警告: ファイル test.o を無視します。ファイルは、リンクされているアーキテクチャではないサポートされていないファイル形式でビルドされました (x86_64)
  • アーキテクチャ x86_64 の未定義シンボル: "_main"、次から参照:
  • crt1.10.6.o ld で開始: アーキテクチャ x86_64 のシンボルが見つかりません collect2: ld は 1 つの終了ステータスを返しました

gcc 行で -arch i386 (x86_64) を使用すると、同じエラーが返されました。

誰でも助けることができますか?:)

4

3 に答える 3

6

これらのコマンドは私のために機能します(OS X 10.12 x64):

nasm -f macho test.asm -DDARWIN
ld -o test test.o -arch i386 -lc -no_pie -macosx_version_min 10.12 -lSystem
于 2015-04-29T17:32:55.817 に答える
1

machoは 32 ビット形式です。の代わり
に使用してみてください。完全な行:macho64macho

nasm -f macho64 test.asm
于 2013-02-21T15:44:14.913 に答える
0

nasm のバージョンを更新して、次のコマンドを使用してみてください。

/usr/local/bin/nasm -f macho64 ${file}
ld  -o ${file_path}/${file_base_name} -e _main ${file_path}/${file_base_name}.o
${file_path}/${file_base_name}
于 2016-07-24T09:02:48.370 に答える