configure的这个问题终于搞明白了

喜欢自己编译程序的BSD用户可能经常遇到这样的情况,
configure的时候,机器上明明有这个库,但是它就是没有找到。原因是这个库不在/usr/include和/usr/lib下,而是在
/usr/local/include和/usr/local/lib下。
解决方法:
对于用户:
这样来做
./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
对于solaris用户可能还要加上-rpath=/usr/local/lib
但是这样做偶尔会导致compiler的santy check 失败。
解释:
CFLAGS是在编译的时候传递给编译器的参数
LDFLAGS是链接时传递给linker的参数
一般而言,如果你没有设置CFLAGS,那么autoconf/automake会自动把cflags设置为"-g
-O2"。如果你设置了,它就从这里读取。
而这两个参数全局的影响configure中的test的过程以及后面的编译。
对于开发者:
检查你的configure.ac中有没有
AC_CANONICAL_HOST
这样的调用(直接的或者间接的)
没有的话,加上。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥