2013-02-23 16 views
5
#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); 
} 

मैं इकाई परीक्षण ढांचे, http://www.ohloh.net/p/cmocka cmocka के लिए नया हूँ। जब मैं जीसीसी program.c -lcmocka के रूप में ऊपर कार्यक्रम संकलित और जब मैं ./a.out भाग गया मैं त्रुटि मिली:लोड करते समय त्रुटि साझा पुस्तकालयों: libcmocka.so.0: ऐसा कोई फ़ाइल या निर्देशिका

./a.out:error while loading shared libraries: libcmocka.so.0: cannot open shared object file: No such file or directory

मैंने कोशिश की, लेकिन यह ठीक नहीं कर सकते। यहां समस्या वास्तव में क्या है?

+1

आपका प्रोग्राम लोडर उस साझा लाइब्रेरी को नहीं ढूंढ सकता है। क्या आपने इसे कहीं "अजीब" स्थापित किया था? –

उत्तर

0

यह त्रुटि का अर्थ है कि प्रोग्राम लोडर cmocka साझा लाइब्रेरी फ़ाइल नहीं ढूंढ सकता है। आपको उस निर्देशिका को जोड़ने की आवश्यकता है जिसमें साझा लाइब्रेरी (libmocka.so.x) फ़ाइल "/etc/ld.so.conf" फ़ाइल में मौजूद है। इसे LD_LIBRARY_PATH चर में भी शामिल किया जाएगा।

वास्तव में पुस्तकालयों (साझा और स्थैतिक) को "मानक" फ़ोल्डरों जैसे/usr/lib या/usr/local/lib तक स्थापित करना बेहतर है जब तक आपके पास ऐसा करने का कोई विशिष्ट कारण न हो।

+0

यहां इंस्टॉलेशन के लिए आउटपुट है जो मैंने किया था। 'अभिषेक @ अभिषेक-ubuntu: - Doxygen (लापता: DOXYGEN_EXECUTABLE) नहीं पा सके ~/चित्र $ sudo स्थापित कर - विन्यास किया - उत्पन्न किया - फ़ाइलों का निर्माण करने के लिए लिखा गया है:/घर/अभिषेक/चित्र [100%] निर्माण का लक्ष्य cmocka_shared परियोजना ... स्थापित करें - स्थापित विन्यास: "" - अप-टू-डेट: /usr/local/include/cmocka.h - अप-टू -डेट: /usr/local/lib/libcmocka.so.0.0.1 - अद्यतित: /usr/local/lib/libcmocka.so.0 - अद्यतित:/usr/स्थानीय/lib/libcmocka.so' –

+0

/usr/local/lib /etc/ld.so.conf में है? कुछ googling मुझे बताता है कि फेडोरा distros उस जोड़ नहीं है। क्यूँ मुझे पता नहीं! चूंकि यह libs के लिए एक बहुत ही आम स्थापित स्थान है। –

+0

सबसे पहले जांचें कि/usr/local/lib LD_LIBRARY_PATH में है और /etc/ld.so.conf संपादन से पहले "निर्यात LD_LIBRARY_PATH =/usr/local/lib: $ {LD_LIBRARY_PATH}" का उपयोग करके अस्थायी रूप से इसे जोड़ने का प्रयास करें। साथ ही, कृपया ध्यान दें कि कुछ distros के अंदर .conf फ़ाइलों के साथ /etc/ld.so.conf.d निर्देशिका है। यदि ऐसा है तो आपको इस निर्देशिका के अंदर/usr/local/lib को एक नई .conf फ़ाइल (local.conf कहें) में जोड़ने की आवश्यकता है। कोई भी परिवर्तन करने के बाद (/etc/ld.so.conf या /etc/ld.so.conf.d पर), आपको "ldconfig" कमांड चलाने की आवश्यकता है। –

1

आप देख सकते हैं कि आप फ़ोल्डर/usr/स्थानीय/lib तक पहुँचने की अनुमति/

क्या एक ls -lart /usr/local/lib/libcmocka.so और उपयोग की अनुमति की जांच और अगर जाँच आप अनुमति

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 विकल्प का उपयोग कर सकते हैं। इस मामले में, यदि आपने इसे कहीं अपरंपरागत स्थापित किया है, तो जीसीसी अभी भी इसे पा सकता है यदि आप निर्दिष्ट करते हैं कि लाइब्रेरी फाइलें कहां स्थित हैं

संबंधित मुद्दे