[root@bogon bin]# python3
python3: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
解決方法:
[root@bogon bin]# echo "/usr/lib" > /etc/ld.so.conf.d/python3.6.conf
[root@bogon bin]# ldconfig
[root@bogon bin]# ldd /usr/bin/python3
linux-vdso.so.1 =>? (0x00007ffdcdd46000)
libpython3.6m.so.1.0 => /usr/lib/libpython3.6m.so.1.0 (0x00007fddfe4f1000) ?這里乐设,之前是顯示not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fddfe2d5000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fddfe0d0000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fddfdecd000)
libm.so.6 => /lib64/libm.so.6 (0x00007fddfdbcb000)
libc.so.6 => /lib64/libc.so.6 (0x00007fddfd807000)
/lib64/ld-linux-x86-64.so.2 (0x000055d9c1cf5000)
[root@bogon bin]# python3
Python 3.6.4 (default, Jan? 3 2018, 10:00:47)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
關于ldconfig:(以下來自網絡)
ldconfig命令的用途,主要是在默認搜尋目錄(/lib和/usr/lib)以及動態(tài)庫配置文件/etc/ld.so.conf內所列的目錄下,搜索出可共享的動態(tài)鏈接庫(格式如前介紹,lib*.so*),進而創(chuàng)建出動態(tài)裝入程序(ld.so)所需的連接和緩存文件.緩存文件默認為/etc/ld.so.cache,此文件保存已排好序的動態(tài)鏈接庫名字列表.
1. 往/lib和/usr/lib里面加東西啃擦,是不用修改/etc/ld.so.conf的帽氓,但是完了之后要調一下ldconfig,不然這個library會找不到
2. 想往上面兩個目錄以外加東西的時候,一定要修改/etc/ld.so.conf膜钓,然后再調用ldconfig桃煎,不然也會找不到
比如安裝了一個mysql到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql/lib下面愕乎,這時就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib阵苇,保存過后ldconfig一下,新的library才能在程序運行時被找到感论。
3. 如果想在這兩個目錄以外放lib绅项,但是又不想在/etc/ld.so.conf中加東西(或者是沒有權限加東西)。那也可以比肄,就是export一個全局變量LD_LIBRARY_PATH快耿,然后運行程序的時候就會去這個目錄中找library囊陡。一般來講這只是一種臨時的解決方案,在沒有權限或臨時需要的時候使用掀亥。
4. ldconfig做的這些東西都與運行程序時有關撞反,跟編譯時一點關系都沒有。編譯的時候還是該加-L就得加搪花,不要混淆了遏片。
5. 總之,就是不管做了什么關于library的變動后撮竿,最好都ldconfig一下吮便,不然會出現一些意想不到的結果。不會花太多的時間幢踏,但是會省很多的事髓需。