• gcc 库路径里同时有相同文件名的动态库和静态库


    找不到库的处理方案

    有两种方法:

    一、可以把当前路径加入 /etc/ld.so.conf中然后运行ldconfig,或者以当前路径为参数运行ldconfig(要有root权限才行)。

    二、把当前路径加入环境变量LD_LIBRARY_PATH中

    如何使用库
    gcc中关于库的参数有:
    -L  指定搜寻库的目录
          如指定当前目录 gcc -L .
    -l    指定要链接的库的名称
          加入库的名称是libmylib.a,则gcc -l mylib,即去头去尾。
    --static  组织在链接时使用动态库
    --shared 生成动态库
    --static-libgcc  链接静态libgcc库
    --shared-libgcc 链接动态libgcc库
     
    可见对动态库和静态库的使用方法是一样的,同一个库如果同时存在动态库和静态库,优先链接动态库,除非使用--static强制使用静态库。
     
    库标准路径下存在libABC.a和libABC.so使用gcc -lABC如何选择连接静态连接库或者动态连接库?通过--hare --static选项?
    如果在同一路径下面,并且两种库同名,这样会选择动态库。
     
    gcc 同时连接 静态库和动态库现在有 libmy.a & libmy.so两个库,其中的函数供main.cc调用要在可执行文件中同时连接这两个库gcc -g -lstdc++ -g -L. -lmy -l ./libmy.a -o test.exe main.cc // 报找不到libmy.a,可是在当前目录下已经有这个文件了gcc -g -lstdc++ -g -L. -l libmy.so -l ./libmy.a -o test.exe main.cc // 报找不到libmy.so,在当前目录下也有这个文件用了 -static 选线,则报动态库中的函数没定义请问大家有什么招不?
    我记得静态库混合动态库要加特殊指令的,你可以试试这样:gcc -g -lstdc++ -g -WI,-Bdynamic -L. -lmy -WI,-Bstatic -L. -lmy -o test.exe main.cc
     
     
  • 相关阅读:
    Kubernetes Python Client 初体验之安装授权
    用Ubuntu和树莓派系统部署kubernetes集群后的一些心得
    OpenWrt下基于OLSR的Ad-Hoc组网实现网络摄像头多节点访问
    KVM初体验之virt-manager unable to connect to libvirt的处理办法
    oracle参数和日志文件
    trigger
    package
    function
    procedure
    oracle异常处理
  • 原文地址:https://www.cnblogs.com/mydriverc/p/7345873.html
Copyright © 2020-2023  润新知