gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:

例子1:

gcc -o example1 example1.c  -I /usr/local/include/freetype2 -lfreetype -lm

上面这句话在编译example1.c 时,

-I /usr/local/include/freetype2 表示将/usr/local/include/freetype2作为第一个寻找头文件的目录,参数-l  (小写的i)。

-lfreetype  ,-l  (小写的l)参数就是用来指定程序要链接的库-l参数紧接着就是库名。指定程序链接的库名是freetype.

-lm 表示程序指定的链接库名是m  (math数学库)

例2:

gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld

上面这句表示在编译hello.c时:

-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,

寻找的顺序是:/home/hello/include-->/usr/include-->/usr/local/include

-L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,

寻找的顺序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib

-lworld表示在上面的lib的路径中寻找libworld.so动态库文件

(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件),程序链接的库名是world

例3:

使用GCC编译动态链接库的项目时,在其他目录下执行很可以出现找不到动态链接库的问题。

这种情况多发生在动态链接库是自己开发的情况下,原因就是程序运行时找不到去何处加载动态链接库。

可能会说在编译时指定了链接的目录啊!编译时指定的 -L的目录,只是在程序链接成可执行文件时使用的程序执行时动态链接库加载不到动态链接库。

j解决方法是使用-wl,-rpath=<link_path>参数,<link_path>就是链接库的路径

如: gcc -o test test.c -I/test/include -L/test/lib -ltest -Wl,-rpath=/test/lib

参考资料

https://blog.csdn.net/furzoom/article/details/70843664

https://www.cnblogs.com/alan666/p/8311984.html

gcc中的 -I -L(大写l) -l(小写l) -Wl,-rpath 选项相关推荐

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

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

  2. C语言/C++中字符串中英文字母大写转化成小写详细内容

    字符串大写转化成小写: 先建立一个字符数组,char a[22]; 在将字符数组里面放内容,gets_s(sp);再将这个字符数组存放在b变量(指针变量)中; 这个b变量的类型是cahr*; 最后,将 ...

  3. 记一次JAVA中字符串首字母大写转化为小写的Code

    因为见过很多文章都有记载, 所以我这里也就用于个人简单的记录下 /*** 首字母大写转化为小写* 如果首字符不是大写;就原值返回.* @param strValue* @return*/public ...

  4. C语言从键盘上输入一个字符串,要求统计并输出该字符串中各位数字、大写字母、小写字母、空格和其他字符出现的次数

    #include <stdio.h> #include <string.h> int main() {     char str[100];     int i,num=0,s ...

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

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

  6. 数据结构:假设有一个带头结点的单链表L,每个结点值由单个数字、小写字母和大写字母构成。设计一个算法将其拆分成3个带头结点的单链表L1、L2和L3,L1包含L中的所有数字结点,L2包含L中的所有小写字母

    假设有一个带头结点的单链表L,每个结点值由单个数字.小写字母和大写字母构成.设计一个算法将其拆分成3个带头结点的单链表L1.L2和L3,L1包含L中的所有数字结点,L2包含L中的所有小写字母结点,L3 ...

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

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

  8. gcc / -L 和 -Wl,-rpath 区别

    首先需明确一点, 链接阶段查找库的位置和运行时查找库的位置是两码事. -L 指定编译链接时库的搜索目录. -Wl,-rpath 指定程序运行时库搜索目录. 可以使用 ldd 命令查看生成的可执行程序的 ...

  9. 解决tex中参考文献出现[S.l.: s.n.]、[S.l.]、 [s.n.]问题

    见: 解决tex中参考文献出现[S.l.: s.n.].[S.l.]. [s.n.]问题_Robot Liu的博客-CSDN博客 问题解决:LaTeX biblatex 参考文献出现 [S.l.]: ...

  10. Makefile: 参数-I (大写字母i), -l (小写字母l) 和-L的区别

    在写Makefile的时候,其实并不像写CMakeList.txt那么方便,直接include_directories, target_link_libraries,而且对于这些关键字大小写都是不敏感 ...

最新文章

  1. P1155 双栈排序(二分图的染色判断+链式前向星)
  2. 编程之美3.3 计算两个字符串的相似度
  3. vue 表格内容跳转页面_Vue项目实战系列文章(一)项目预热
  4. VS2013导入opencv320配置属性文件
  5. SQL SERVER 2008 数据恢复错误的解决步骤
  6. WinForm支持拖拽效果
  7. webapp入门到实战_web前端入门到实战:前端高手在CSS 开发效率的必备片段
  8. keepalived脑裂问题查找
  9. Tensorflow GAN对抗生成网络实战
  10. layui 时间控件 只显示时分或者分秒
  11. c语言车牌号5位数,为何有的车牌是五位数字,有的加英文字母?终于知道原因了!...
  12. mysql pxc gcache_MySQL高可用之PXC
  13. python微信投票该用户被锁定、恢复时间_微信登录多久恢复正常
  14. 广工anyview数据结构第七章(2021.12)
  15. 管理好团队的七个要点,你做到了几个?
  16. 大恒相机开发实践(1)——实时采图
  17. 华为OD机试真题 Python 实现【最快到达医院的方法】【2023 Q1 | 100分】
  18. 软考初级程序员--学习
  19. 用纸筒做机器人_怎样用纸盒做机器人
  20. html病毒实验,计算机病毒实验手册4-5-9-10-8-v4.0.pdf

热门文章

  1. durango服务器维护,Durango狂野大陆连接服务器失败_九游手机游戏
  2. 神棍节前夕,沃商店迎来1岁生日
  3. 《心灵捕手》中的10段经典台词(10 classic lines from Good Will Hunting)
  4. 美景订餐管理系统--用于公司内部加班订餐
  5. 正则表达式高级用法: 分组
  6. Debian 7 源(32/64bit)好用的源
  7. 微信小程序云开发-树洞小程序Treehole(畅所欲言/交易广场实现)
  8. excel高级筛选怎么用_Excel表格自动筛选的9个高级用法
  9. 小武实习的debug日记
  10. 简单粗暴讲述自动化仓储系统