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 に答える