FLAGS 表示用于 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将会设置这个选项,链接时会有这个参数,编译出来的可执行程序的库文件搜索路径就得到扩展了。

Makefile选项CFLAGS LDFLAGS LIBS相关推荐

  1. Makefile选项CFLAGS,LDFLAGS,LIBS

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

  2. Makefile选项 CFLAGS LDFLAGS

    makefile内嵌隐含规则的命令中,所使用的变量都是预定义的变量.我们将这些变量称为"隐含变量".这些变量允许对它进行修改:在Makefile中.通过命令行参数或者设置系统环境变 ...

  3. Makefile 选项 CFLAGS 、LDFLAGS 、LIBS

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

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

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

  5. Makefile之cflags参数和ldflags参数

    GCC编译选项CFLAGS参数 选项          说明 -c              用于把源码文件编译成 .o 对象文件,不进行链接过程 -o              用于连接生成可执行文 ...

  6. makefile的选项CFLAGS和LDFLAGS

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

  7. gcc 编译相关CFLAGS LDFLAGS LIB

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

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

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

  9. C的编译链接及Makefile学习

    文章目录 参考博客 一.程序编译到执行文件过程^1,2^ 编译过程 链接过程 二.我们需要理解的编译器内容 GCC.G++.GDB GCC 选项 编译相关选项 GCC添加库依赖(-l 和 -L) GC ...

最新文章

  1. grub中mbr的程序
  2. Docker容器内部署Java微服务的内存限制问题
  3. springboot使用异步线程池执行自定义任务实例
  4. redhat下安装mysql 5.6.20,解压zip包,查看已经安装过的mysql,卸载rpm安装包,安装mysql服务器端和客户端,修改mysql用户名,登陆mysql,启动关闭mysql
  5. jmeter(2)录制脚本
  6. 使用Java迭代器修改数据时要小心
  7. 新发布 | Azure镜像市场正式上线
  8. smoothstep
  9. 1013.windows平台下移植qtmqtt三方库
  10. Requests接口测试(五)
  11. http禁用缓存、文件下载
  12. 十大热门职位公布 高薪行业一目了然
  13. UWB测距原理详细解答
  14. wll多功能超小linux,WLL多功能PXE网启服务器3.6终结版
  15. [Go] String型常用操作
  16. Linux curses库使用
  17. MySql(九)连接查询
  18. AMAZINGPANDAVERSE打造2.0元宇宙生态的能量杠杆
  19. SpringBoot+WebSocket+Vue整合实现在线聊天
  20. SpringBoot - 如何实现接口幂等性?

热门文章

  1. Simulink仿真---PMSM滞环电流控制仿真模型学习
  2. STM32堆和栈(Heap Stack)及SRAM存储使用
  3. grub中mbr的程序
  4. mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)...
  5. Python3编写网络爬虫04-爬取猫眼电影排行实例
  6. [PYTHON] 核心编程笔记(18.多线程编程)
  7. 前端JS调用微信扫一扫二维码
  8. zabbix 自动发现和注册
  9. hibernate4连接mysql自动创建表之错误
  10. Linux下使用Google Authenticator配置SSH登录动态验证码