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

LDFLAGS是选项,LIBS是要链接的库。都是喂给ld的,只不过一个是告诉ld怎么吃,一个是告诉ld要吃什么。

网上不难搜索到上面这段话。不过“告诉ld怎么吃”是什么意思呢?

看看如下选项:

LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib
DLIBS = -lmysqlclient -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将会设置这个选项, 链接时会有这个参数,编译出来的可执行程序的库文件搜索路径就得到扩展了。


PS:-Wl,R在GraphicsMagick环境下,用为-R, 也就是LDFLAGS = -L/var/xxx/lib -R/var/xxx/lib

CFLAGS 或 CPPFLAGS的用法

CPPFLAGS=’-I/usr/local/libjpeg/include -I/usr/local/libpng/include’

CC 与 CXX:

<span style="color:#000000"><code>这是 C 与 C++ 编译器命令。默认值一般是 “gcc” 与 “g++”。
</code></span>
  • 1

CPPFLAGS will be given to the C preprocessor

<span style="color:#000000"><code>这是用于预处理阶段的选项。
</code></span>
  • 1

CFLAGS 与 CXXFLAGS

<span style="color:#000000"><code>CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。
</code></span>
  • 1

makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别相关推荐

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

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

  2. Makefile 选项 CFLAGS 、LDFLAGS 、LIBS

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

  3. makefile的选项CFLAGS和LDFLAGS

    CFLAGS 表示用于 C 编译器的选项, CXXFLAGS 表示用于 C++ 编译器的选项. 这两个变量实际上涵盖了编译和汇编两个步骤. 先来看几个相关的环境变量:PATH.LDFLAGS.CFLA ...

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

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

  5. makefile中的CPPFLAGS LDFLAGS CFLAGS选项详解

    让我们先看看 Makefile 规则中的编译命令通常是怎么写的. 大多数软件包遵守如下约定俗成的规范: #1,首先从源代码生成目标文件(预处理,编译,汇编),"-c"选项表示不执行 ...

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

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

  7. Makefile 编译与链接选项及CFLAGS与LDFLAGS示例说明

    GCC编译选项CFLAGS参数 GCC链接选项LDFLAGS参数 实例 最近看了makefile的手册之后,发现还是不知道怎么写makefile,而且就连看也看的是云里雾里,就我现在工作当中看到的一些 ...

  8. Makefile 编译与链接选项及CFLAGS与LDFLAGS说明

    CFLAGS与LDFLAGS的说明,他们都是是隐含规则的变量,且是一种命令参数变量. makefile内嵌隐含规则的命令中,所使用的变量都是预定义的变量.我们将这些变量称为"隐含变量&quo ...

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

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

最新文章

  1. Lyft推出一种新的实时地图匹配算法
  2. JavaScript学习笔记06【高级——JavaScript中的事件】
  3. jdk1.7 String switch的实现
  4. seata 如何开启tcc事物_分布式事务Seata-TCC源码分析
  5. Pentium奔腾架构/流水线及其优化
  6. D. Little Artem and Dance
  7. strncpy 用法
  8. 你们这些程序员,真得每天都在读代码吗?
  9. 爆料喽!!!开源日志库Logger的剖析分析
  10. 个人永久性免费-Excel催化剂功能第44波-可见区域复制粘贴不覆盖隐藏内容
  11. 使用Canvas绘制简单工程符号(续)
  12. Google Code 开源项目
  13. 苏州企业如何识别不良商标代理机构
  14. 魔窗研发副总裁沈哲:移动端SDK的优化之路
  15. 用大白话聊聊JavaSE -- 如何理解Java Bean(一)
  16. 什么是 PHP? 为什么用 PHP? 有谁在用 PHP?
  17. vscode输入英文时字体之间的间隔突然变大
  18. 统计每天的新老用户,日活,周活,月活
  19. 使用ProxySelector选择代理服务器
  20. 手机性能测试指标及操作

热门文章

  1. 拼多多发展量子计算机,IBM首次接入三方共建量子生态系统,量子计算或将决定未来的科技走向!...
  2. 3.9L的机箱+15.6寸的便携显示器+无线键鼠,便携与性能的极致结合!
  3. 邮件系统自建,企业如何避免忽悠正确选型
  4. 用CFileFind类实现的目录树遍历
  5. 全球及中国金刚石合成机行业盈利模式及需求规模预测报告(2022-2027)
  6. 使用selenium爬虫抓取数据
  7. DSP篇--C6678功能调试系列之EMIF、GPIO调试
  8. 小波变换、小波分解[python实现]//未完待续
  9. 蜂巢式技术藉嵌入式SIM卡大举进军物联网
  10. 小米12sUltra什么时候发布 小米12sUltra配置如何