簡體   English   中英

檢查和自動工具的編譯問題

[英]Compiling issues with check and autotools

我有一些帶有check框架的C單元測試。

我的Makefile.am看起來像:

check_PROGRAMS = check_fseqs
check_fseqs_SOURCES = tests/check_fseqs.c
check_fseqs_LDADD = -lcheck

文件結構為( 省略了一些文件):

.
|-- Makefile.am
|-- configure.ac
|-- src
|   |-- fseqs.c
|   |-- fseqs.h
|   |-- fseqs.o
`-- tests
    `-- check_fseqs.c

然后我運行make check並拋出:

$ make check
/Applications/Xcode.app/Contents/Developer/usr/bin/make  check_fseqs
gcc  -g -O2   -o check_fseqs tests/check_fseqs.o -lcheck 
Undefined symbols for architecture x86_64:
  "_f_msb", referenced from:
      _test_f_msb in check_fseqs.o
  "_min", referenced from:
      _test_min in check_fseqs.o
  "_substract", referenced from:
      _test_substract in check_fseqs.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [check_fseqs] Error 1
make: *** [check-am] Error 2

怎么了?

您缺少依賴項。 如果要構建fseqs.o,則需要將其添加為check_DEPENDENCIES ,並將其添加到check_LDADD行中。 如果它是一個庫,您將做同樣的事情,指定庫文件而不是組成庫的所有目標文件。

check_DEPENDENCIES位確保生成正確的規則,而check_LDADD確保在鏈接時將文件添加到命令行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM