問題タブ [ldflags]
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.
makefile - autotools configure からコンパイラ/リンカー フラグを削除します
でビルドできるプロジェクト(C用のAntlr3)があります./configure && make && make install
。
コンパイル コマンドで使用されるフラグの 1 つに-Wl,-soname -Wl,libantlr3c.so
. コマンド全体は次のとおりです。
-Wl,-soname -Wl,libantlr3c.so
その部分だけを取り除くにはどうすればよいですか?
CFLAGS
コンパイラとリンカーのフラグは、LDFLAGS
configure コマンドでオーバーライドできることを理解しています。このリンクによると、それは次のようなものです
環境変数として使用できる/使用する必要があることは理解していますが、次のようなものです
ただし、これらの使用はすべてのorをオーバーライドしようとすると思います。フラグを除外したいだけです(これは、コンパイラがフラグをリンカーに渡すことを意味します。CFLAGS
LDFLAGS
-soname
-Wl,
LDFLAGS=-soname=
またはのようなものCFLAGS="-Wl,soname -Wl,"
、およびそれらのバリエーションを使用した私の試みは、これまでのところ成功していません。
この質問から、Makefile 内からフラグを削除できたかのように見えますが、コマンドを使用してコマンド ラインからフラグをオーバーライドすることに適用できるとは思えませんconfigure
。これらの変数をmake
コマンドの代わりにコマンドに提供することも可能ですconfigure
が、それも成功しませんでした。
コマンドから生成されるため、Makefile を変更しても意味がないことに注意してくださいconfigure
。
c - CFLAGS CPPFLAGS と LDFLAGS は cc を呼び出しますが、値を gcc に渡しません
簡単な printf C コードを書き、簡単なメイクファイルを作成しました。CFLAGS、CPPFLAGS、および LDFLAGS を使用して make を実行すると、変数の値が cc 実行に入り、その後、次のようにそれらの値を使用せずに gcc が実行されます。
ビルドされたプログラムを実行すると、定義されていない #else の printf が返されるため、define は定義されていません。
teste.c
メイクファイル