CFLAGS 表示用于 C 编译器的选项,
CXXFLAGS 表示用于 C++ 编译器的选项。
这两个变量实际上涵盖了编译和汇编两个步骤。
先来看几个相关的环境变量:PATH、LDFLAGS、CFLAGS
PATH:大家应该都非常熟悉。安装一个包后可能会在安装文件夹建立一个bin文件夹,里面都是些可执行程序,为了让系统能找到这些程序,就须要我们把该路径增加到PATH环境变量中。以下会讲到怎样增加。
LDFLAGS:gcc等编译器会用到的一些优化參数,也能够在里面指定库文件的位置。使用方法:LDFLAGS=“-L/usr/lib -L/path/to/your/lib”。
每安装一个包都差点儿一定的会在安装文件夹里建立一个lib文件夹。假设你明明安装了某个包,而安装还有一个包时。它愣是说找不到。那就把那个包的lib路径增加的LDFALGS中试一下吧。
CFLAGS:和LDFLAGS相似,只只是要向里加如的是头文件(.h文件)的路径。如:CFLAGS=“-I/usr/include -I/path/to/your/include”。相同地。安装一个包时会在安装路径下建立一个include文件夹,当安装过程中出现故障时。试着把曾经安装的包的include文件夹增加到该变量中来。
LIBS:告诉链接器要链接哪些库文件,如LIBS = -lpthread -liconv
简单地说。LDFLAGS是告诉链接器从哪里寻找库文件。而LIBS是告诉链接器要链接哪些库文件。只是使用时链接阶段这两个參数都会加上,所以你即使将这两个的值互换,也没有问题。
有时候LDFLAGS指定-L尽管能让链接器找到库进行链接,可是执行时链接器却找不到这个库,假设要让软件执行时库文件的路径也得到扩展,那么我们须要增加这两个库给"-Wl,R":
export C_INCLUDE_PATH="/mnt/toolchain/lin32/beecrypt-4.1.2/include"
export LDFLAGS="-L/mnt/toolchain/lin32/beecrypt-4.1.2 "
export CPLUS_INCLUDE_PATH="~/local/include"
export LD_LIBRARY_PATH="/usr/bin"
./configure那怎样在那些变量中增加这些路径呢?以PATH变量为例。
一种方法是:直接在命令行下:
$ PATH="$PATH:/path/to/your/bin:/another/path/to/bin"
$ export PATH
这样的方法的优点是方便,马上生效,缺点是把当前会话或shell关了之后就失效了,下次还得执行一遍。
还有一种方法是:把以下的两行内容增加到~/.bashrc文件里,假设想让其影响到整个系统而不只是当前用户,就把以下的内容增加到/etc/bash.bashrc(记得有的系统是/etc/bashrc这个文件)
![PATH and LDFLAGS and CFLAGS - Bob - 黄宝的博客 PATH and LDFLAGS and CFLAGS - Bob - 黄宝的博客](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![PATH and LDFLAGS and CFLAGS - Bob - 黄宝的博客 PATH and LDFLAGS and CFLAGS - Bob - 黄宝的博客](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
然后,又一次启动shell就可以。
须要注意的是,PATH变量的分隔符是:号,其它的是空格,
所以LDFLAGS应该是这样:
LDFLAGS=“$LDFLAGS -L/path/to/lib -L/path/to/lib”
CFLAGS应该是这样:
CFLAGS=“$CFLAGS -I/path/to/iclude -I/path/to/include”