zoukankan      html  css  js  c++  java
  • 学习笔记之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/ld.so.conf.d/*.conf
        
        sudo ldconfig  //更新,即可执行找到
        
        //那么又有个问题
        //我不知道xxx.so的路径怎么办?如下方法:
        find / -name xxx.*
        //在根目录下查找xxx文件名的所有类型的文件
        
        //扩展一下,如果我要查找的是文件中的某个函数,因为编译的时候经常会出现无法找到某个函数,怎么办?
        //这样办:
        grep "xxx函数名" -r ./  
        // ""里的是查找的字符串, -r 后的参数是查找路径
        
        好啦,这次的分享就这么多,希望可以帮助到有需要的你。
  • 相关阅读:
    php使用redis锁
    php接收json数据
    计算机中的二进制、八进制、十进制、十六进制
    mysql8导入myslq5 报错
    如何用最简单的方式解释依赖注入?依赖注入是如何实现解耦的?(通俗易懂)
    【运维】Linux进阶命令简记--Linux(3)
    springboot项目在docker容器中如何优雅关闭
    springboot项目接入sap与部署到docker遇到的问题实录
    如何解决springboot参数传中文乱码
    maven如何动态统一修改版本号
  • 原文地址:https://www.cnblogs.com/luoyankuan/p/11853279.html
Copyright © 2011-2022 走看看