-1

私は NASM (netwide assembler) プログラムを書いていますが、何らかの理由で C で書かれたいくつかの関数を使用する必要がありました。そこで、 ldリンカーを使用して、コンパイル済みの C オブジェクト ファイルとコンパイル済みの Assembly オブジェクトをリンクしようとしました。私はこのようにしました:

ld -m elf_x86_64 -lc --dynamic-linker=/lib64/ld-linux-x86-64.so.2 object_files -o program.

そして、必要なパラメーターを取得するまで、リンクして十分に長く動作することを望んでいませんでした。これで、このパラメーター セットで期待どおりに動作するようになりました。-lcしかし、との意味がわかりません--dynamic-linker=/lib64/ld-linux-x86-64.so.2。彼らは何をしますか ?

4

1 に答える 1

1
  1. -lc - リンク c 標準ライブラリ
  2. --dynamic-linker=/lib64/ld-linux-x86-64.so.2. - プログラムローダーを設定します。Linux ELF バイナリには、このフィールドがあります。

後者は静的バイナリでも必要であり、それ以外のものはローダーを混乱させ、実行されません。

man ld はそのパラメーターをリストします。

于 2020-09-10T15:47:48.740 に答える