Exception in thread “main“ java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
阿新 • • 發佈:2020-12-08
ldd
list dynamic dependencies
列出動態依賴關係
使用方法例:
$ ldd darknet linux-vdso.so.1 => (0x00007ffe1c956000) libopencv_highgui.so.3.4 => /usr/local/lib/libopencv_highgui.so.3.4 (0x00007f34fd932000) libopencv_videoio.so.3.4 => /usr/local/lib/libopencv_videoio.so.3.4 (0x00007f34fd6de000) libopencv_imgcodecs.so.3.4 => /usr/local/lib/libopencv_imgcodecs.so.3.4 (0x00007f34fd400000) libopencv_imgproc.so.3.4 => /usr/local/lib/libopencv_imgproc.so.3.4 (0x00007f34fcd61000) libopencv_core.so.3.4 => /usr/local/lib/libopencv_core.so.3.4 (0x00007f34fc803000) libcuda.so.1 => /usr/lib/x86_64-linux-gnu/libcuda.so.1 (0x00007f34fb6ac000) libcudart.so.10.0 => /usr/local/cuda/lib64/libcudart.so.10.0 (0x00007f34fb432000) libcublas.so.10.0 => /usr/local/cuda/lib64/libcublas.so.10.0 (0x00007f34f6e9c000) libcurand.so.10.0 => /usr/local/cuda/lib64/libcurand.so.10.0 (0x00007f34f2d35000) libcudnn.so.7 => /usr/local/cuda/lib64/libcudnn.so.7 (0x00007f34db524000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f34db1a2000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f34dae99000) ...
ldconfig
ldconfig是一個動態連結庫管理命令,其目的為了讓動態連結庫為系統所共享。
ldconfig的主要用途:
預設搜尋/lilb和/usr/lib,以及配置檔案/etc/ld.so.conf內所列的目錄下的庫檔案。
搜尋出可共享的動態連結庫,庫檔案的格式為:lib*.so.,進而創建出動態裝入程式(ld.so)所需的連線和快取檔案。
快取檔案預設為/etc/ld.so.cache,該檔案儲存已排好序的動態連結庫名字列表。
ldconfig通常在系統啟動時執行,而當用戶安裝了一個新的動態連結庫時,就需要手工執行這個命令。
ldconfig需要注意的地方:
1、往/lib和/usr/lib裡面加東西,是不用修改/etc/ld.so.conf檔案的,但是新增完後需要呼叫下ldconfig,不然新增的library會找不到。
2、如果新增的library不在/lib和/usr/lib裡面的話,就一定要修改/etc/ld.so.conf檔案,往該檔案追加library所在的路徑,然後也需要重新呼叫下ldconfig命令。比如在安裝MySQL的時候,其庫檔案/usr/local/mysql/lib,就需要追加到/etc/ld.so.conf檔案中。命令如下:
echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
ldconfig -v | grep mysql
或者在/etc/ld.so.conf.d/下建立配置檔案:
echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
然後再執行ldconfig命令
3、如果新增的library不在/lib或/usr/lib下,但是卻沒有許可權操作寫/etc/ld.so.conf檔案的話,這時就需要往export裡寫一個全域性變數LD_LIBRARY_PATH,就可以了。