CFLAGS、CXXFLAGS、LDFLAGS与LIBS

CFLAGS 表示用于 C 编译器的选项,
CXXFLAGS 表示用于 C++ 编译器的选项。
这两个变量实际上涵盖了编译和汇编两个步骤。

CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量中来。

LDFLAGS:gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。用法:LDFLAGS=-L/usr/lib -L/path/to/your/lib。每安装一个包都几乎一定的会在安装目录里建立一个lib目录。如果明明安装了某个包,而安装另一个包时,它愣是 说找不到,可以抒那个包的lib路径加入的LDFALGS中试一下。

LIBS:告诉链接器要链接哪些库文件,如LIBS = -lpthread -liconv

简单地说,LDFLAGS是告诉链接器从哪里寻找库文件,而LIBS是告诉链接器要链接哪些库文件。不过使用时链接阶段这两个参数都会加上,所以你即使将这两个的值互换,也没有问题。

有时候LDFLAGS指定-L虽然能让链接器找到库进行链接,但是运行时链接器却找不到这个库,如果要让软件运行时库文件的路径也得到扩展,那么我们需要增加这两个库给"-Wl,R":

LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib

如果在执行./configure以前设置环境变量export LDFLAGS="-L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib" ,注意设置环境变量等号两边不可以有空格,而且要加上引号(shell的用法)。那么执行configure以后,Makefile将会设置这个选项,链 接时会有这个参数,编译出来的可执行程序的库文件搜索路径就得到扩展了。

CFLAGS、CXXFLAGS、LDFLAGS与LIBS相关推荐

  1. Makefile编译选项:CFLAGS、LDFLAGS、LIBS

    目录 一.CFLAGS 二.LDFLAGS 三.LIBS 四.参考资料 前言 本文只涉及cflags.ldflags.libs,关于makefile文件非常建议看看大神写的系列博客<跟我一起写M ...

  2. gcc ------ 编译与链接选项及CFLAGS、LDFLAGS、LIBS

    gcc ------ 编译与链接选项及CFLAGS.LDFLAGS.LIBS GCC手册:https://gcc.gnu.org/onlinedocs/ GCC编译选项CFLAGS参数 选项 说明 - ...

  3. Makefile 选项 CFLAGS 、LDFLAGS 、LIBS

    CFLAGS 表示用于C编译器的选项 CXXFLAGS 表示用于C++编译器的选项 这两个变量实际上涵盖了编译和汇编的两个步骤 CFLAGS:指定头文件(.h)的路径,如:CFLAGS=-I/usr/ ...

  4. CFLAGS、CXXFLAGS和LDFLAGS、LIBS和-L、-rpath、-rpath-link和LD_LIBRARY_PATH

    日常工作实践中,可以通过变量和编译器配合使用,控制编译器的行为.这些参数必须在gcc命令行中显示指定,使用export命令指定这些变量是无效的. CLFAGS和CXXFLAGS CLFAGS表示C编译 ...

  5. makfile的编译选项:CFLAGS、CPPFLAGS、LDFLAGS、LIBS

    1.LDFLAGS & LIBS 关于makefile的依赖规则以及目标生成的步骤,这篇先不介绍,这里主要关注我在看makefile时遇到的一堆CFLAGS与LDFLAGS定义进行说明. 费了 ...

  6. makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别

    makefile的选项CFLAGS.CPPFLAGS.LDFLAGS和LIBS的区别 LDFLAGS是选项,LIBS是要链接的库.都是喂给ld的,只不过一个是告诉ld怎么吃,一个是告诉ld要吃什么. ...

  7. linux编译参数CPPFLAGS、CFLAGS、LDFLAGS参数的理解

    参考到下面博客,把编译步骤分解的很细 linuxC编译参数CPPFLAGS.CFLAGS.LDFLAGS参数的理解 - yongfengnice - 博客园 CPPFLAGS : 预处理器需要的选项 ...

  8. 如何在win10安装libaio,并且使用CFLAGS和LDFLAGS环境变量指示其位置,并且如何设置DS_BUILD_AIO=0禁用async_io...

    libaio是一个 Linux 库,因此不能在 Windows 10 上安装.如果您正在寻找与 Windows 相关的异步 I/O 库,可以考虑使用 Windows 平台 API,例如异步 I/O(I ...

  9. linux 编译 cflags,python – 如何设置CFLAGS和LDFLAGS来编译pycrypto

    我正在尝试将架构库安装到旧机器上. /usr/lib中有一些遗留库,例如libgmp. (py27)[qrtt1@hcservice app]$ls /usr/lib|grep gmp libgmp. ...

  10. CFLAGS,CXXFLAGS与CPPFLAGS的区别

    太长不看版:  CFLAGS,CXXFLAGS是针对某语言的,CPPFLAGS是全语言通用的 编译C程序的隐式make规则是 %.o:%.c$(CC) $(CPPFLAGS) $(CFLAGS) -c ...

最新文章

  1. R语言可视化绘制基本图形
  2. HOOK -- IAT HOOK 本进程MessageBox
  3. 马哥linux高薪中级-DNS
  4. Binder 和parcel 讲解
  5. redhat9安装mysql_redhat 9.0 安装mysql
  6. 【视频】Vue作者分享:Vue 3.0 进展
  7. 《灵枢-五色》明堂藩蔽图
  8. Flutter高级第7篇:点击穿透问题、页面禁止左右滑动
  9. centos7安装mysql允许远程连接_Centos7安装mysql8.0,开启远程访问
  10. Doc2Vec模型介绍及使用
  11. Foxmail 设置自动落款签名
  12. Error Code: 1054. Unknown column 'xxx' in 'field list'
  13. 二氧化硅纳米微球光子晶体乳液聚合聚苯乙烯核壳结构/中空二氧化硅/钛纳米微球的制备方法
  14. 公众号绑定开发者流程
  15. Impala 在网易有数 BI 应用场景的优化经验
  16. 自媒体常用小程序:去水印、配音、文案提取
  17. BLV 3D打印机Klipper配置参考
  18. c语言收银系统程序编码,C语言 超市收银系统.doc
  19. OSChina 周二乱弹 ——爸爸陆陆续续回家了
  20. BACKUP - Backup Files

热门文章

  1. 多益网络2022春笔试题记忆版
  2. xLang 的类型转换
  3. 超声波测深仪工作原理
  4. 【5G之道】第二十三章:5G无线接入
  5. Python游戏——Pong
  6. 计算机平面设计是计算机类吗,计算机平面设计是什么?平面设计就业前景怎么样?...
  7. 深入浅出SpringBoot2.x
  8. 奥克兰大学商学院计算机专业,奥克兰大学的商科专业 推荐三大专业
  9. Udacity数据集
  10. ElasticSearch创建索引指定分片和副本