2、如何通過源碼,使用源碼所提供的函數接口 //即linux c/c++ 第三方看的安裝及調用技巧: //首先當然是下載源碼包解壓存放至ubuntu目錄下准備編譯 //編譯安裝三部曲: sudo cmake sudo make sudo make install //然后查看/usr/lib/,/usr/include/ 是否有相關頭文件及庫文件 //或者在/usr/local/lib/,/usr/local/include/是否有相關頭文件及庫文件 //若沒有見需要自行拷貝到該目錄下才可調用,或者修改環境變量也可 //當調用庫中的函數接口時,編譯通過: gcc test.c -o test -I inc_path -L lib_path -lopenobex //但是運行時出現找不到xxx.so文件, //這個時候的技巧來了,使用一下命令: ldd test //查看該文件的依賴庫如下: linux-vdso.so.1 => (0x00007ffc009a0000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f236f085000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f236ed7f000) libopenobex.so.2 => /usr/lib/libopenobex.so.2 (0x00007f236eb6a000) libbluetooth.so.3 => /usr/lib/x86_64-linux-gnu/libbluetooth.so.3 (0x00007f236e94c000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f236e583000) /lib64/ld-linux-x86-64.so.2 (0x000055b9107f3000) libusb-1.0.so.0 => /lib/x86_64-linux-gnu/libusb-1.0.so.0 (0x00007f236e36c000) libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f236e15a000) libcgmanager.so.0 => /lib/x86_64-linux-gnu/libcgmanager.so.0 (0x00007f236df3f000) libnih.so.1 => /lib/x86_64-linux-gnu/libnih.so.1 (0x00007f236dd27000) libnih-dbus.so.1 => /lib/x86_64-linux-gnu/libnih-dbus.so.1 (0x00007f236db1c000) libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f236d8d7000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f236d6cf000) //這里的程序並沒有出現找不到的庫的情況 //linux通過/etc/ld.so.cache文件搜索鏈接的動態庫 //假設出現無法找到新編譯的庫時,如下方法: //需要把xxx.so所在路徑添加到/etc/ld.so.cache中: include /etc/ld.so.conf.d/*.conf sudo ldconfig //更新,即可執行找到 //那么又有個問題 //我不知道xxx.so的路徑怎么辦?如下方法: find / -name xxx.* //在根目錄下查找xxx文件名的所有類型的文件 //擴展一下,如果我要查找的是文件中的某個函數,因為編譯的時候經常會出現無法找到某個函數,怎么辦? //這樣辦: grep "xxx函數名" -r ./ // ""里的是查找的字符串, -r 后的參數是查找路徑 好啦,這次的分享就這么多,希望可以幫助到有需要的你。