zoukankan      html  css  js  c++  java
  • gcc -I -i -L -l 参数区别 / -l(静态库/动态库)(转)

    介绍
    gcc - 参数

    -I ( i 的大写) :指定头文件路径(相对路径或觉得路径,建议相对路径)

    -i :指定头文件名字 (一般不使用,而是直接放在**.c 文件中通过#include<***.h> 添加)

    -L :指定连接的动态库或者静态库路径(相对路径或觉得路径,建议相对路径)

    -l (L的小写):指定需要链接的库的名字(链接 libc.a :-lc 链接动态库:libc.so : -lc 注意:-l后面直接添加库名省区“lib”和“.so”或“.a” )

    问题:
    问题1:-l(L的小写)链接的到底是动态库还是静态库

    答案:如果链接路径下同时有 .so 和 .a 那优先链接 .so

    问题2:如果路径下同时有静态库和动态库如何链接静态库

    答案:使用显示链接, gcc -l:lib***.a (将静态库的名字显示写出来)

    或者在 gcc 编译的时候 加入参数 -static -lXXX, 则可以添加路径下面的静态库。

    验证方法:

    可以通过 ldd 命令查看生成的 目标文件链接的库,使用方法: ldd ***.o

    参考:
    1.https://blog.csdn.net/youqika/article/details/54617525

    2.https://www.cnblogs.com/benio/archive/2010/10/25/1860394.html

    3.gcc生成静态库和动态库:https://www.cnblogs.com/woainilsr/archive/2013/07/10/3182891.html

    4.静态库和动态库链接路径顺序:https://blog.csdn.net/qq_21034239/article/details/54382311

    静态库链接时搜索路径顺序:

    1. ld会去找GCC命令中的参数-L
    2.再找gcc的环境变量LIBRARY_PATH (用法:LIBRARY_PATH= path)
    3.再找内定目录 /lib /usr/lib /usr/local/lib这是当初compile gcc时写在程序内的 (因系统版本而定 :/lib64)
    动态库链接时、执行时搜索路径顺序:

    1. 去找GCC命令中的参数-L
    2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径 (LD_LIBRARY_PATH=path)
    3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径 (修改/etc/ld.so.conf文件,将路径添加进去,运行/sbin/ldconfig)
    4.默认的动态库搜索路径/lib(因系统版本而定:/lib64)
    5.默认的动态库搜索路径/usr/lib(因系统版本而定)
    头文件搜索路径:

    1. 去 -I( i 的大写 ) 指定的路径
    2. 源程序头(#include "")文件中指定的路径
    3. /usr/include
    4. /usr/local/include
    有关环境变量:

    LIBRARY_PATH环境变量:指定程序静态链接库文件搜索路径
    LD_LIBRARY_PATH环境变量:指定程序动态链接库文件搜索路径
    (这部分来源:https://blog.csdn.net/qq_21034239/article/details/54382311 ,并修改)

    5.Linux中(.a/.la/.so/.o) 区别:http://www.cnblogs.com/findumars/p/5421910.html

    转载自:https://blog.csdn.net/abcdu1/article/details/86083295

  • 相关阅读:
    485串口接线
    mvc3 升级mvc5
    VB连接ACCESS数据库,使用 LIKE 通配符问题
    VB6 读写西门子PLC
    可用的 .net core 支持 RSA 私钥加密工具类
    解决 Win7 远程桌面 已停止工作的问题
    解决 WinForm 重写 CreateParams 隐藏窗口以后的显示问题
    解决安装 .net framework 发生 extracting files error 问题
    CentOS7 安装配置笔记
    通过特殊处理 Resize 事件解决 WinForm 加载时闪烁问题的一个方法
  • 原文地址:https://www.cnblogs.com/cqwo/p/15103588.html
Copyright © 2011-2022 走看看