博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Makefile选项CFLAGS,LDFLAGS,LIBS
阅读量:6000 次
发布时间:2019-06-20

本文共 891 字,大约阅读时间需要 2 分钟。

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

转载地址:http://pfzmx.baihongyu.com/

你可能感兴趣的文章
ABAP Netweaver和Hybris Enterprise Commerce Platform的登录认证
查看>>
CRM中间件里的发布-订阅者模式
查看>>
github如何更新fork的代码
查看>>
说说 Python 的编码原则
查看>>
JavaScript中 for、for in、for of、forEach等使用总结
查看>>
vert x web实战教程(一)
查看>>
[译]UISearchController 教程:开始使用
查看>>
Retrofit源码解读(一)--Retrofit简单流程
查看>>
深入Spring Boot(一):快速入门
查看>>
前端常见问题(二) - js + vue + es6
查看>>
移动端样式之踩坑及解决方案
查看>>
关于iOS底层原理的若干解析
查看>>
检测后台错误
查看>>
插件式换肤框架搭建 setContentView源码阅读
查看>>
javascript变量提升详解
查看>>
我要学好分布式-RMI通信框架
查看>>
通过浏览器访问一个 PHP 文件时发生了什么?
查看>>
java B2B2C 源码 多级分销Springcloud多租户电子商城系统-Spring Cloud eureka
查看>>
《快学 Go 语言》第 14 课 —— 魔术变性指针
查看>>
[MetalKit]44-Raytracing with Metal射线追踪
查看>>