Makefile选项CFLAGS,LDFLAGS,LIBS

转载于:http://www.cnblogs.com/wanghetao/archive/2013/10/01/3348885.html

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

时间: 2024-10-18 11:02:46

Makefile选项CFLAGS,LDFLAGS,LIBS的相关文章

Makefile 选项 CFLAGS 、LDFLAGS 、LIBS

CFLAGS 表示用于C编译器的选项 CXXFLAGS 表示用于C++编译器的选项 这两个变量实际上涵盖了编译和汇编的两个步骤 CFLAGS:指定头文件(.h)的路径,如:CFLAGS=-I/usr/include -I/path/include .同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量中来. LDFLAGS:gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置.用法:LDFLAGS=

openwrt makefile选项

Package/conffiles (optional) 由该包安装的配置文件的列表,一行一个文件.

《Linux 应用编程》—第13章 Linux 多线程编程

目录 多线程概述 什么是线程 线程与进程的关系 为什么使用多线程 POSIX Threads 概述 线程管理 线程ID 创建与终止 创建线程 终止线程 线程范例1 连接与分离 线程分离 线程连接 线程范例2 线程属性 属性对象 线程状态 线程栈 线程范例3 线程安全 互斥量 条件变量 多线程概述 什么是线程 线程是进程内的顺序执行流,一个进程中可以并发多条线程,每条线程并行执行不同的任务. 线程与进程的关系 一个线程只能属于一个进程,一个进程可以包含多个线程,但是至少有一个主线程 资源分配给进程

Webbench-1.5开源软件工具源码深度剖析

Webbench是有名的网站压力测试工具. 其标准测试可以测试服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量. Webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进行测试的能力.还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试. 网上下载好webbench-1.5的压缩安装包,拷贝到linux环境下解压安装. 我用的是VM虚拟机上安装ubuntu12.04 1. 网上下载源码压缩包拷贝到linux环境下 2. 解

linux环境下写C++操作mysql(二)

main.cpp #include<stdio.h> #include<stdlib.h> #include"mysqlInterface.h" int main() { CMysqlInterface mysqlObj; mysqlObj.connect(); return 0; } mysqlInterface.h class CMysqlInterface { public: CMysqlInterface(); ~CMysqlInterface(); i

makefile中一些编译器选项

makefile中一些编译器选项 CFLAGS CXXFLAGS CFLAGS 表示用于 C 编译器的选项 CXXFLAGS 表示用于 C++ 编译器的选项 这两个变量实际上涵盖了__编译__和__汇编__两个步骤 指定头文件(.h文件)的路径 CFLAGS=-I/usr/include -I/path/include (安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量中来) LDFLAGS gcc等编译器会用到的一

转:跟我一起写Makefile (PDF重制版)

原文地址:http://seisman.info/how-to-write-makefile.html 其它一些问题  不妨看一下:http://blog.csdn.net/huyansoft/article/details/8924624 简化版  不妨看一下:http://blog.chinaunix.net/uid-26980210-id-3244651.html 跟我一起写 Makefile (PDF 重制版)By [email protected]作者: 陈皓2014 年 03 月 0

一篇文章教你读懂Makefile

makefile很重要      什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力.因为,makefil

跟我一起写 Makefile ---&lt;转&gt;

http://blog.csdn.net/augusdi/article/details/7348375 概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写ma