#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:无法打开共享对象文件:没有这样的文件或目录
我试过但无法修复它。究竟是什么问题?
答案 0 :(得分:1)
您可以检查您是否有权访问文件夹/ usr / local / lib /
执行ls -lart /usr/local/lib/libcmocka.so并检查访问权限并检查您是否具有读取权限
答案 1 :(得分:0)
此错误表示程序加载程序找不到cmocka共享库文件。您需要将共享库(例如libmocka.so.x)所在的目录添加到文件“/etc/ld.so.conf”中。将它包含在LD_LIBRARY_PATH变量中也可以。
实际上最好将库(共享和静态)安装到“标准”文件夹,例如/ usr / lib或/ usr / local / lib,除非您有某些特定原因不这样做。
答案 2 :(得分: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)
OR与命令行:
gcc my_example_test.c -L/usr/local/lib -lcmocka -o mytest && ./mytest
在最后一种情况下,您可以使用-L
选项告诉gcc在哪里查找库文件。在这种情况下,如果您已将其安装在非常规的地方,如果您指定库文件的位置,gcc仍然可以找到它