zoukankan      html  css  js  c++  java
  • 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
     
     
  • 相关阅读:
    11->centos6 安装oracle
    centos7安装rlwrap
    ajax
    java获取时间戳
    idea主要设置大纲图
    ppycharm设置解释器版本号码
    JTA 深度历险
    学会数据库读写分离、分表分库——用Mycat,这一篇就够了!
    分库分表的几种常见玩法及如何解决跨库查询等问题
    深入浅出SOA
  • 原文地址:https://www.cnblogs.com/mydriverc/p/7345873.html
Copyright © 2011-2022 走看看