Makefile选项CFLAGS LDFLAGS LIBS
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相关推荐
- Makefile选项CFLAGS,LDFLAGS,LIBS
CFLAGS 表示用于 C 编译器的选项, CXXFLAGS 表示用于 C++ 编译器的选项. 这两个变量实际上涵盖了编译和汇编两个步骤. CFLAGS: 指定头文件(.h文件)的路径,如:CFLAG ...
- Makefile选项 CFLAGS LDFLAGS
makefile内嵌隐含规则的命令中,所使用的变量都是预定义的变量.我们将这些变量称为"隐含变量".这些变量允许对它进行修改:在Makefile中.通过命令行参数或者设置系统环境变 ...
- Makefile 选项 CFLAGS 、LDFLAGS 、LIBS
CFLAGS 表示用于C编译器的选项 CXXFLAGS 表示用于C++编译器的选项 这两个变量实际上涵盖了编译和汇编的两个步骤 CFLAGS:指定头文件(.h)的路径,如:CFLAGS=-I/usr/ ...
- makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
makefile的选项CFLAGS.CPPFLAGS.LDFLAGS和LIBS的区别 LDFLAGS是选项,LIBS是要链接的库.都是喂给ld的,只不过一个是告诉ld怎么吃,一个是告诉ld要吃什么. ...
- Makefile之cflags参数和ldflags参数
GCC编译选项CFLAGS参数 选项 说明 -c 用于把源码文件编译成 .o 对象文件,不进行链接过程 -o 用于连接生成可执行文 ...
- makefile的选项CFLAGS和LDFLAGS
CFLAGS 表示用于 C 编译器的选项, CXXFLAGS 表示用于 C++ 编译器的选项. 这两个变量实际上涵盖了编译和汇编两个步骤. 先来看几个相关的环境变量:PATH.LDFLAGS.CFLA ...
- gcc 编译相关CFLAGS LDFLAGS LIB
CFLAGS 表示用于 C 编译器的选项, CXXFLAGS 表示用于 C++ 编译器的选项. 这两个变量实际上涵盖了编译和汇编两个步骤. CFLAGS: 指定头文件(.h文件)的路径,如:CFLAG ...
- Makefile编译选项:CFLAGS、LDFLAGS、LIBS
目录 一.CFLAGS 二.LDFLAGS 三.LIBS 四.参考资料 前言 本文只涉及cflags.ldflags.libs,关于makefile文件非常建议看看大神写的系列博客<跟我一起写M ...
- C的编译链接及Makefile学习
文章目录 参考博客 一.程序编译到执行文件过程^1,2^ 编译过程 链接过程 二.我们需要理解的编译器内容 GCC.G++.GDB GCC 选项 编译相关选项 GCC添加库依赖(-l 和 -L) GC ...
最新文章
- grub中mbr的程序
- Docker容器内部署Java微服务的内存限制问题
- springboot使用异步线程池执行自定义任务实例
- redhat下安装mysql 5.6.20,解压zip包,查看已经安装过的mysql,卸载rpm安装包,安装mysql服务器端和客户端,修改mysql用户名,登陆mysql,启动关闭mysql
- jmeter(2)录制脚本
- 使用Java迭代器修改数据时要小心
- 新发布 | Azure镜像市场正式上线
- smoothstep
- 1013.windows平台下移植qtmqtt三方库
- Requests接口测试(五)
- http禁用缓存、文件下载
- 十大热门职位公布 高薪行业一目了然
- UWB测距原理详细解答
- wll多功能超小linux,WLL多功能PXE网启服务器3.6终结版
- [Go] String型常用操作
- Linux curses库使用
- MySql(九)连接查询
- AMAZINGPANDAVERSE打造2.0元宇宙生态的能量杠杆
- SpringBoot+WebSocket+Vue整合实现在线聊天
- SpringBoot - 如何实现接口幂等性?
热门文章
- Simulink仿真---PMSM滞环电流控制仿真模型学习
- STM32堆和栈(Heap Stack)及SRAM存储使用
- grub中mbr的程序
- mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)...
- Python3编写网络爬虫04-爬取猫眼电影排行实例
- [PYTHON] 核心编程笔记(18.多线程编程)
- 前端JS调用微信扫一扫二维码
- zabbix 自动发现和注册
- hibernate4连接mysql自动创建表之错误
- Linux下使用Google Authenticator配置SSH登录动态验证码