2012-03-15 27 views
4

我開始使用檢查用於測試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應用程序還小經驗)

+2

你安裝了檢查框架嗎?如果你有,你可以嘗試使用'pkg-config'說'gcc check_money.c \'pkg-config --cflags --libs檢查'' – 2012-03-15 09:20:32

+0

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

+0

@ another.anon.coward - 謝謝! - 它解決了這個問題 – srnka 2012-03-15 10:08:41

回答

7

添加評論的迴應:
請檢查您是否已經安裝了check框架。如果是的話,你可以嘗試使用pkg-config

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

這裏pkg-config實用程序將讀取.pc文件(這恰好是check.pccheck框架,從而在命令中的最後一項說check的情況下)&添加必要的編譯器標誌(--cflags選項)&庫/鏈接器選項(--libs選項)

希望這有助於!