2012-05-16 10 views
27

मैं एक साधारण परीक्षण कार्यक्रम है कि मैं जब मैं चलाएँ:libaio.so.1: साझा नहीं खोल सकता वस्तु फ़ाइल

./hello: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 

मैं इस तरह से लिंक:

$(CC) $(CCFLAGS) -o hello hello.o -L../ocilib-3.9.3/src/.libs -L../instantclient_11_2 -locilib 

मेरे LD_LIBRARY_PATH शामिल इस:

LD_LIBRARY_PATH=../ocilib-3.9.3/src/.libs:../instantclient_11_2:/usr/lib 

/usr/lib इस तरह दिखता है:

01 ldd नमस्ते की

आउटपुट:

libocilib.so.3 => ../ocilib-3.9.3/src/.libs/libocilib.so.3 (0x0000002a95558000) 
libc.so.6 => /lib64/tls/libc.so.6 (0x0000003811200000) 
libclntsh.so.11.1 => ../instantclient_11_2/libclntsh.so.11.1 (0x0000002a956c4000) 
/lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000) 
libnnz11.so => ../instantclient_11_2/libnnz11.so (0x0000002a97f56000) 
libdl.so.2 => /lib64/libdl.so.2 (0x0000003811500000) 
libm.so.6 => /lib64/tls/libm.so.6 (0x0000003811700000) 
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000003811b00000) 
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003819000000) 
libaio.so.1 => not found 

मैं आशा करती हूं कि मैं कुछ सरल यहाँ याद कर रहा हूँ। ओरेकल तत्काल पैकेज में libaio की आवश्यकता होती है, लेकिन ऐसा लगता है कि पहले से ही स्थापित किया गया है तो समस्या क्या है?

+1

पोस्ट के उत्पादन '$ ldd हैलो'। – trojanfoe

+0

ऐसा लगता है कि आप पुस्तकालय है जो आप की जरूरत नहीं है की एक 64-बिट संस्करण लेनी होगी। –

उत्तर

33

यह 32/64 बिट विसंगति की तरह दिखता है। ldd आउटपुट दिखाता है कि मुख्य रूप से /lib64 से लाइब्रेरी चुने गए हैं। इससे संकेत मिलेगा कि आपने ओरेकल क्लाइंट के 64 बिट संस्करण को स्थापित किया है और 64 बिट निष्पादन योग्य बनाया है। लेकिन libaio.so शायद 32 बिट लाइब्रेरी है और आपके एप्लिकेशन के लिए इसका उपयोग नहीं किया जा सकता है।

तो आपको या तो libaio के 64 बिट संस्करण की आवश्यकता है या आप अपने आवेदन का 32 बिट संस्करण बनाते हैं।

+32

मेरी 64 बिट Ubuntu 12.04 प्रणाली पर, मैं इस पुस्तकालय स्थापित की 32-बिट संस्करण था। शायद मुझे यह था क्योंकि यह किसी अन्य 32 बिट सॉफ्टवेयर की निर्भरता थी। बस "apt-get install libaio1" चलाना 64 बिट संस्करण में भी खींच जाएगा। – amarillion

+5

@amarillion - मैं पुष्टि कर सकता है कि "apt-get libaio1 स्थापित" 64-बिट Ubuntu 12.04 पर समस्या तय। धन्यवाद। – SteveT

0

यहां ओपनस्यूज 12.3 पर समाधान इसके अलावा libaio के 32-बिट संस्करण को स्थापित कर रहा था। ओरेकल को अब इसकी आवश्यकता है, हालांकि 12.1 पर यह 32-बिट संस्करण के बिना चलता है।

2

मुझे एक ही समस्या थी, और यह पता चला कि मैंने पुस्तकालय स्थापित नहीं किया है।

यह लिंक सुपर उपयोगी था।

http://help.directadmin.com/item.php?id=368

55

प्रकार निम्नलिखित:

sudo apt-get install libaio1 libaio-dev 

या

sudo yum install libaio 
+4

इसने मेरी समस्या हल की! – confiq

+0

भी मदों के लिए खोज करने के लिए "sudo उपयुक्त खोज libaio" कर सकते हैं <== नोट "उपयुक्त" नहीं "apt-get" –

0

मैं एक ऐसी ही समस्या आ रही है।

मैंने पाया

conda pyodbc स्थापित

गलत है!

apt-get स्थापित अजगर-pyodbc

मैं इस समस्या का समाधान।

0

मैं Kubuntu 16.04 में निम्नलिखित (करना पड़ा जब मैं का उपयोग करें।3):

  1. स्थापित पुस्तकालयों: sudo apt-get install libaio1 libaio-dev
  2. का पता लगाएं जहां पुस्तकालय स्थापित किया गया है: sudo find/-iname 'libaio.a' -type f ->/usr/lib/x86_64-linux-gnu/libaio.a
  3. के परिणामस्वरूप वातावरण चर को परिणाम में जोड़ें: export LD_LIBRARY_PATH="/usr/lib/oracle/12.2/client64/lib:/usr/lib/x86_64-linux-gnu"