問題タブ [linker-flags]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 基本的な GCC フラグに関するいくつかの質問
Cプログラムをコンパイルして実行しようとしています。プログラムはスレッドを使用します。UbuntuターミナルでWSLを使用してWindows 10を実行しています。(Ubuntu仮想ボックスでも試しています)これは、すべてのプログラムで使用している「デフォルト」のMakefile形式です(それぞれの名前とフラグを変更しています)
Cでスレッドを使用するのはこれが初めてで、-pthreadを発見しました。フラグに追加する必要があることがわかりました(これはCFLAGSで行いました)。何らかの理由で、このメイクファイルを上記で実行すると、pthread 関数が見つからないというエラーが発生し、次の行を変更して修正する方法があることに気付きました。
最後に pthread を追加します。これらすべてにより、フラグ全般についていくつかの調査を行うようになり、gcc のマニュアルページとグーグルを検索した後、これらの質問に対する簡単な答えが見つかりませんでした。
- -pthread を .o タスクと .c タスクに追加する必要があるのはなぜですか? 1つだけに追加するだけでは「十分」ではないのはなぜですか?
- -w フラグとは何ですか? 「警告」の略であることは知っていますが、-w と -Wall の違いは何ですか?
- -Iとは。国旗?繰り返しますが、「インクルード」の略であることがわかりましたが、それが何をしているのかわかりません..私のメイクファイルは、そのフラグの有無にかかわらず機能します。
ありがとうございました。
makefile - リンカー (LD) パラメータとは何を意味しますか?
私は 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
。彼らは何をしますか ?