加载共享库时出错:libcmocka.so.0:没有这样的文件或目录

时间:2013-02-23 16:12:37

标签: c unit-testing

#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:无法打开共享对象文件:没有这样的文件或目录

我试过但无法修复它。究竟是什么问题?

3 个答案:

答案 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仍然可以找到它