6
#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 UnitTest tests[] = {
        unit_test(null_test_success),
    };
    return run_tests(tests);
}

我是 cmocka 单元测试框架的新手,http://www.ohloh.net/p/cmocka。当我将上述程序编译为 gcc program.c -lcmocka 并运行 ./a.out 时,出现错误:

./a.out:加载共享库时出错:libcmocka.so.0:无法打开共享对象文件:没有这样的文件或目录

我试过但无法修复它。这里到底有什么问题?

4

3 回答 3

1

你能检查你是否有权访问文件夹 /usr/local/lib/

执行 ls -lart /usr/local/lib/libcmocka.so 并检查访问权限并检查您是否具有读取权限

于 2013-02-23T16:54:48.470 回答
0

这个错误意味着程序加载器找不到 cmocka 共享库文件。您需要将共享库(例如 libmocka.so.x)所在的目录添加到文件“/etc/ld.so.conf”中。将它包含在 LD_LIBRARY_PATH 变量中也可以。

实际上,最好将库(共享和静态)安装到“标准”文件夹,例如 /usr/lib 或 /usr/local/lib,除非您有特定的理由不这样做。

于 2013-02-23T16:28:13.927 回答
0

我在我的项目中使用 cmake,所以我解决这个问题的方法是使用以下 cmake 命令:

# Find and add the cmocka library
find_library(CMOCKA_LIBRARY NAMES cmocka)
add_library(cmocka SHARED IMPORTED)
set_property(TARGET cmocka PROPERTY IMPORTED_LOCATION "${CMOCKA_LIBRARY}")

# Create and link the testing file to cmocka
add_executable(mytest my_example_test.c)
target_link_libraries(mytest cmocka)

# Add this as a test for ctest
add_test(TEST_MY_EXAMPLE mytest)

或使用命令行:

gcc my_example_test.c -L/usr/local/lib -lcmocka -o mytest && ./mytest

在最后一种情况下,您可以使用该-L选项告诉 gcc 在哪里查找库文件。在这种情况下,如果您将它安装在非常规的地方,如果您指定库文件的位置,gcc 仍然可以找到它

于 2016-07-22T15:32:10.110 回答