我開始使用檢查用於測試C應用程序的框架。 爲了更好地理解,我在檢查包中查看了示例。它工作正常,但我不需要automake工具 - 我想通過我自己的Makefile編譯它(因爲我想正確理解檢查,並且需要將我的最終應用程序作爲OS的一個包使用)。也許我可以在那裏使用自動生成的Makefile,但現在,這將是下一個我必須學習的新事物,並且我限制了準備單元測試的時間。 (當然,我想研究和理解生成Makfile的工具,使用configure等)構建用於檢查測試的C庫框架
在使用我的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.o
,這是由GCC創建:
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
文件以便檢查成功構建?有必要爲每個應用程序創建該文件?不能是共享庫中的某個地方?
(我很抱歉,如果我的問題是「愚蠢的」,我必須在構建Linux應用程序還小經驗)
你安裝了檢查框架嗎?如果你有,你可以嘗試使用'pkg-config'說'gcc check_money.c \'pkg-config --cflags --libs檢查'' – 2012-03-15 09:20:32
gcc選項'-MF bla.Tpo'包含了構建依賴關係, [見這裏-M](http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc/Preprocessor-Options.html#Preprocessor-Options)。所以,如果你正確地指定所有的庫和依賴關係,你不需要這些。從錯誤判斷,你不鏈接與檢查庫。 Tr another.anon.coward的pkg命令。這通常返回必要的包含路徑和庫。 – Bort 2012-03-15 09:49:11
@ another.anon.coward - 謝謝! - 它解決了這個問題 – srnka 2012-03-15 10:08:41