1

Learn CHardWayの本からプログラムを実行しようとしています

ライブラリファイル名「build/liblcthw.a」を最後のパラメータとして渡す必要があります。

例:

Ubuntuでは動作しません:

gcc -g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG build / liblcthw.a tests / list_tests.c -o tests / list_tests

Ubuntuで動作します:

gcc -g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG tests / list_tests.c -o tests / list_tests build / liblcthw.a

Makefileでこれを処理するにはどうすればよいですか?CFLAGSは、ソースファイル名の前にのみ追加し、機能しません。CFALGSにコマンドの最後にライブラリファイル名を追加させるにはどうすればよいですか?

4

2 に答える 2

3

CFLAGS は C コンパイラのフラグです。ライブラリは通常、LDLIBS と呼ばれる変数に入ります。LDLIBS=build/liblcthw.a を設定し、それが機能するかどうかを確認します。

于 2012-07-26T06:50:33.417 に答える
1

コマンドラインでのソースとライブラリの順序が間違っているため、最初の呼び出しは成功しません。正しい順序は、ソースファイル、オブジェクトファイル、静的ライブラリ、動的ライブラリの順です。

于 2012-07-26T08:40:24.383 に答える