zoukankan      html  css  js  c++  java
  • 共享库/动态库

    动态库的命名规则:lib+库的名字+.so
      libmyname.so

    动态库的创建和使用【共享库】

         步骤一:生成对应的.o文件【.c --> .o】
                gcc -fPIC -c *.c -I ../include 生成与位置无关的.o文件【-fPIC 与位置无关】
            步骤二:将生成的.o文件打包成动态库.so文件
                gcc -shared -o libMyCalDll.so *.o 生成动态库libMyCalDll.so
            步骤三:发布动态库生成可执行文件
                方式一:
                    gcc main.c lib/libMyCalDll.so -o mysumdll.out -Iinclude
                方式二:
                    gcc main.c -Iinclude -L lib -l MyCalDll -o mysum
        
            ldd mysum.out 查看可执行文件在执行过程中所依赖的所有的共享库
                结果:linux-vdso.so.1 =>  (0x00007ffd36291000)
                      lib/libMyCalDll.so (0x00007f1a1e81a000)
                      libc.so.6 => /lib64/libc.so.6 (0x00007f1a1e44c000)【标准C库】
                      /lib64/ld-linux-x86-64.so.2 (0x00007f1a1ea1c000)【动态链接器】
            mysum.out可执行文件使用【动态链接器】调用它所依赖的动态库
        
            解决动态链接库不能被加载到的问题:
                方法一:临时测试
                    在环境变量 LD_LIBRARY_PATH 中添加要加载的动态链接库的路径,
                    之后动态链接器调用可执行文件依赖的动态库时会先在 LD_LIBRARY_PATH中查找
                    之后再从默认的环境变量 PATH 里面按顺序查找
                    注意:该方法只能在测试中临时使用,关闭终端设置失效
                    export LD_LIBRARY_PATH=./lib【export 导入到系统的环境变量中】
                    
                方法二:永久设置
                    在当前用户家目录下的隐藏文件.bashrc中添加
                    export LD_LIBRARY_PATH=/root/testdandan/Calculator/lib【动态库的绝对路径】
                    .bashrc生效需要重启终端
                    
                方法三:将该文件放到系统目录下的lib下【不推荐使用】
                
                方法四:永久设置
                1).需要找到动态链接器的配置文件 /etc/ld.so.conf
                        2).将动态库的绝对路径写到配置文件中 /root/testdandan/Calculator/lib
                        3).更新配置
                            ldconfig -v
  • 相关阅读:
    递归求解的两道小练习
    unittest的前置后置,pytest的fixture和共享机制conftest.py
    pytest + allure
    Jmeter 录制 https协议是出现“您访问的不是安全链接”提示时
    Jmeter
    如何不做登录请求而获取cookie到Jmeter里
    Fiddler抓包后转成jmeter脚本
    Jmeter- 笔记12
    Jmeter- 笔记11
    Jmeter- 笔记10
  • 原文地址:https://www.cnblogs.com/zheaven/p/14096293.html
Copyright © 2011-2022 走看看