学习笔记之linux下如何调⽤第三⽅库的函数接⼝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/f.d/*.conf
sudo ldconfig //更新,即可执⾏到
//那么⼜有个问题
//我不知道xxx.so的路径怎么办?如下⽅法:
find / -name xxx.*
//在根⽬录下查xxx⽂件名的所有类型的⽂件
//扩展⼀下,如果我要查的是⽂件中的某个函数,因为编译的时候经常会出现⽆法到某个函数,怎么办?
//这样办:
grep "xxx函数名" -r ./
// ""⾥的是查的字符串, -r 后的参数是查路径
好啦,这次的分享就这么多,希望可以帮助到有需要的你。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论