Makefile选项CFLAGS,LDFLAGS,LIBS

原创 2016年08月30日 14:43:29

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

cmake学习笔记

在使用cmake编写项目管理脚本时,除了需要有cmake语法的基本知识外,最好是还有一本书便于你查询需要的cmake变量、命令和属性,除非你非常非常熟悉cmake的语法。cmake提供了网页版的帮助文...
  • hunter_wwq
  • hunter_wwq
  • 2014年12月30日 14:43
  • 1816

makefile的特殊变量,类似$@, $+等 (copied)

来源:http://hi.baidu.com/jingweiyoung/item/dea74399c40eb24cf14215cf Makefile ...
  • u012474286
  • u012474286
  • 2014年03月07日 16:00
  • 1776

Qt中Makefile文件里INCPATH和LIBS参数详解

1 LIBS中的-l 和 -L参数   -l 参数是用来指定程序要连接的库, -l参数紧接着就是库名, 库名和真正的库文件名的差别, 以数学库为例, 其库名为 m , 其 库文件名为 libm.s...
  • lieyanhaipo
  • lieyanhaipo
  • 2013年12月01日 15:45
  • 4076

Makefile参考样例3:多个文件夹.c的编译

这是一个makefile的范例,用于编译多文件夹,多文件的编译; 代码简洁,容易解理,能自动检查头文件依赖关系,支持不同文件夹下面有相同的文件名的.c文件;...
  • qq446252221
  • qq446252221
  • 2017年03月24日 10:37
  • 211

opencv支持ffmpeg,pkg-config的使用注意事项

ffmpeg在Linux上的安装以及pkg-config的使用
  • xygl2009
  • xygl2009
  • 2013年10月24日 15:51
  • 3552

go标准命令详解0.13 go tool cgo

搬运自github赫林的go_command_tutorial,绝对干货,感谢作者。0.13 go tool cgocgo也是一个Go语言自带的特殊工具。一般情况下,我们使用命令go tool cgo...
  • u012210379
  • u012210379
  • 2015年12月31日 20:41
  • 1121

说说Makefile那些事儿

工作至今,一直对Makefile半知半解。突然某天幡然醒悟,觉得此举极为不妥,只得洗心革面从头学来,以前许多不明觉厉之处顿时茅塞顿开,想想好记性不如烂笔头,便来说说Makefile那些事儿。...
  • wrx1721267632
  • wrx1721267632
  • 2016年10月17日 17:36
  • 981

Linux学习笔记——例说makefile 增加自定义共享库

0.前言     从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力。所以特意借...
  • xukai871105
  • xukai871105
  • 2014年07月05日 20:20
  • 10397

linux下configure配置参数

语法 你必须在源代码树的根目录下调用configure脚本,语法如下: ./configure [OPTION]... [VAR=VALUE]... 若要指定环境变量(比如:CC, ...
  • hy1020659371
  • hy1020659371
  • 2014年07月31日 17:15
  • 4886

makefile的常用选项

makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别LDFLAGS是选项,LIBS是要链接的库。都是喂给ld的,只不过一个是告诉ld怎么吃,一个是告诉ld要吃什么。...
  • FIELDOFFIER
  • FIELDOFFIER
  • 2016年01月06日 11:57
  • 1774
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Makefile选项CFLAGS,LDFLAGS,LIBS
举报原因:
原因补充:

(最多只允许输入30个字)