5

Cアプリケーションのテストにチェックフレームワークを使い始めました。理解を深めるために、チェックパッケージの例を調べました。正常に動作していますが、自動作成ツールは必要ありません。自分のMakefileでコンパイルしたいと思います(チェックを正しく理解し、最終的なアプリケーションをOSのパッケージとして使用する必要があるため)。自動生成されたMakefileをそこで使用できるかもしれませんが、今のところ、それは私が学ばなければならない次の1つの新しいことであり、単体テストの準備に時間を制限しています。(もちろん、Makfileを生成したり、configureを使用したりするためのツールを研究して理解したいと思います。)

Makefileを使用してアプリケーションを構築する際に、チェック機能のためにオブジェクトをリンクしていないという問題があります。

/tmp/ccm7cniy.o: In function `test_money_create':
check_money.c:(.text+0x1e): undefined reference to `tcase_fn_start'
check_money.c:(.text+0x79): undefined reference to `_fail_unless'
check_money.c:(.text+0xcc): undefined reference to `_fail_unless'

サンプルアプリケーションでは、objを含むgccであることがわかりました。check_money-check_money.ogccによって作成されたファイル:

gcc -DHAVE_CONFIG_H -I. -I..     -g -O2 -MT check_money-check_money.o -MD -MP -MF .deps/check_money-check_money.Tpo -c -o check_money-check_money.o `test -f'check_money.c' || echo './'`check_money.c

そしてここに私の問題があります:それは依存関係を使用しますcheck_money-check_money.Tpo./configureこのファイルは、私が使用していないコマンドによって生成されていました。

チェック用に独自の.oファイルを作成して正常にビルドするにはどうすればよいですか?アプリケーションごとにこのファイルを作成する必要がありますか?共有ライブラリのどこかで1つになることはできませんか?

(私の質問が「ばかげている」場合は申し訳ありませんが、Linuxでアプリケーションを構築した経験はまだ少ないです)

4

1 に答える 1

7

応答としてコメントを追加:フレームワーク
がインストールされているかどうかを確認してくださいcheck。もしそうなら、あなたはpkg-configsayを使ってみることができます

gcc check_money.c `pkg-config --cflags --libs check`

ここでpkg-config、ユーティリティは.pcファイルを読み取ります(これはたまたまフレームワークcheck.pcの場合であるcheckため、コマンドの最後のエントリは次のように表示されます)&check必要なコンパイラフラグを追加します(--cflagsオプション)&ライブラリ/リンカーオプション(--libsオプション)

お役に立てれば!

于 2012-03-16T17:49:35.663 に答える