gcc编译程序时,-I(大写 i )、-L (大写 I)、-I(小写 I )的作用与区别

  • 1.问题描述
  • 2. -I (大写i)
  • 3. -L(大写 L)
  • 4.-l(小写L)

1.问题描述

在进行程序编译,有时稍微复杂一点的程序就会使用到库,并且就会去配置一些环境变量,这段时间这点学得有点混乱,所以做个总结区分这三个标志。

2. -I (大写i)

include头文件非标准库中存在的也不是在当前文件夹下的,需要将地址用-i(大写)包含

例如:

gcc -o face baidu_http.c -I /home/hello/include -lcurl -lssl -lcrypto

上面这句指令在编译baidu_http.c时:

-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include --> /usr/include --> /usr/local/includ

3. -L(大写 L)

放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find -lxxx”,也就是链接程序ld在那3个目录里找不到libxxx.so.
这时另外一个参数-L就派上用场了,比如curl库,它在/home/pi/curl/lib目录下,我们编译时就要用

 -L /home/pi/curl/lib -lcurl

-L参数跟着的是库文件所在的目录名。

总得来说:编译程序按照-L指定的路进去寻找库文件,一般的在-L的后面可以一次用-l指定多个库文件。

4.-l(小写L)

  1. -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名
  2. 表示在上面的lib的路径中寻找libxxx.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libxxx.a静态库文件)
  3. 编译程序到系统默认路径搜索,如果找不到,到当前目录,如果当前目录找不到,则到LD_LIBRARY_PATH等环境变量配置的路径去查找,如果还找不到,那么编译程序提示找不到库。

注意:数学库的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了

Linux gcc编译程序时,-I(大写 i )、-L (大写 L)、-I(小写 L )的作用与区别相关推荐

  1. linux 下 gcc编译程序时,-I(大写i) 与-L(大写l)-l(小写l) 的作用

    -I(大写i) include头文件非标准库中存在的不是在当前路径文件夹下的,需要将地址用-I(大写)指定 如: gcc test.c -I /home/hello/include -L(大写l) 放 ...

  2. Makefile中的“-I”(大写i),“-L”(大写l),“-l”(小写l)

    用gcc编译程序时,可能会用到"-I"(大写i),"-L"(大写l),"-l"(小写l)等参数, "-I"(大写i):表 ...

  3. [转] Linux GCC 编译使用

    GCC使用 在使用GCC编译程序时,编译过程可以被细分为四个阶段: 预处理(Pre-Processing) 编译(Compiling)汇编(Assembling) 链接(Linking). 例如:  ...

  4. Linux GCC用法

    GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言.但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran.Pascal.Objective ...

  5. linux编译gcc多久时间,Linux gcc编译参数说明

    在linux中使用gcc编译程序时,若使用-g参数在程序中加入调试信息,则生成可执行文件的大小接近不加-g参数时的两倍. 1.-O,-O1: 这两个命令的效果是一样的,目的都是在不影响编译速度的前提下 ...

  6. linux编译l和l区别,linux 下 g++编译程序时-I(大写i) 与-L(大写l)-l(小写l) 的作用详解...

    作为一个linux入门级使用者,gcc/g++的简单操作已经用过多次, 但是有时稍微复杂一点的程序就会使用到库.在遇到问题的时候我查了挺多前辈总结的资料,也留个脚本希望对朋友们有个帮助.如果也能处理你 ...

  7. 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。

    在Linux下如何使用GCC编译程序.简单生成 静态库及动态库.   本文适用于Linux下开发初学者.本文初步讲解在Linux下如何使用GCC编译程序.简单生成静态库及动态库. 一.关于安装.一般系 ...

  8. Ubuntu Linux gcc的常用命令

    目录 一.gcc简介 二.简单的gcc编译 1 预处理 2 编译为汇编语言代码 3 汇编 4 连接 三.多个程序文件的编译 四.检查错误 五.连接库文件 1 编译成可执行文件 2 链接 3 强制链接时 ...

  9. linux gcc g++编译命令选项

    gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码) ...

  10. linux gcc 静态 动态链接库

    linux gcc 静态 动态链接库 静态链接库 首先生成依赖函数的目标文件 gcc -c source1.c source2.c; 然后归档目标文件到静态库 ar -rcs libYourID.a ...

最新文章

  1. python八:列表(list)
  2. 关于easyui的layout的region的resize的问题(自适应浏览器)
  3. Spring高级应用之注入各类集合
  4. 2 Docker安装及使用
  5. java元婴期(31)----java进阶(springmvc(5)---数据回显数据交互拦截器)
  6. wxWidgets:wxToolbook类用法
  7. Asp.net動態添加控件(转)
  8. 选择所有选项的多选复选框列表或复选框下拉列表
  9. ubuntu-18.04 设置开机启动脚本-亲测有效
  10. “成功”没那么有道理
  11. Hierarchical voxel block hashing for effiecient integration of depth images
  12. Data Guard组件等相关介绍
  13. [转载] 50个数据可视化最有价值的图表(附完整Python代码,建议收藏)
  14. flash 林度_还记得闪客帝国吗?当年有名的 Flash 作者们,现在都去哪儿了?......
  15. 扬州晶澳-年产3GW高性能太阳能光伏组件项目 Acrel-3000WEB电能管理系统的设计及应用
  16. MOOC·嵩天老师团队·北京理工大学:《Python语言程序设计》自学笔记
  17. 面经分享:网友问我,怎样才能在谷歌匹兹堡办公室里写代码?上篇
  18. bugly怎么读_腾讯Bugly巨坑:使用不当造成UI界面卡死
  19. 04. Redis 环境搭建-单实例
  20. Wordress博客添加音乐播放器插件

热门文章

  1. html设置背景图片颜色,CSS设置背景图片及背景颜色示例
  2. 据说是可减少50%交通事故的超越卓越经验
  3. 学生用计算机方着怎么计,科学计算器使用
  4. 让我们旋转跳跃不停歇~~~当3D打印遇上八音盒!(一)
  5. 小程序获取openid时报40125
  6. c++ 圆整(取整)相关函数大全(rint lrint llrint round ceil floor trunc)
  7. c语言 输入英文 字符串,C语言编程:从键盘中输入一个英文字符串
  8. 【FireMonkey】StyleBook使用方法
  9. linux谷歌浏览器flash屏蔽,默认禁用Flash!谷歌发布Chrome 76稳定版
  10. 抽样调查之分层随机抽样