运行示例 CMocka 测试时“未定义对`_cmocka_run_group_tests'的引用”

neo*_*ern 4 c linker gcc undefined-reference cmocka

我安装了CMocka 测试框架并尝试了示例代码

#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>

/* A test case that does nothing and succeeds. */
static void null_test_success(void **state) {
    (void) state; /* unused */
}
int main(void) {
    const struct CMUnitTest tests[] = {
            cmocka_unit_test(null_test_success),
    };
    return cmocka_run_group_tests(tests, NULL, NULL);
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译时,出现以下错误:

$ gcc -o Tests tests.c
    /tmp/ccbwAXrr.o: In function `main':
    tests.c:(.text+0x5e): undefined reference to `_cmocka_run_group_tests'
    collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Sou*_*osh 5

包含头文件提供了函数的前向声明。要获取函数定义,您需要与库链接。

您可以使用-l选项 withgcc链接到所需的库。您可能还需要使用-L选项来提供库的路径。

  • 我现在成功运行了 `gcc -o Tests tests.c -l cmocka -L /usr/local/lib` 但我很确定 `-L` 是多余的。我也忘记了做`ldconfig`,但幸运的是,[总是有一个StackOverflow问题](http://stackoverflow.com/questions/480764/linux-error-while-loading-shared-libraries-cannot-open-shared -object-file-no-s#comment7282227_480764)。 (2认同)