检查iconv.h的头文件

时间:2012-07-27 07:08:30

标签: makefile autoconf

我正在使用FreeBSD并安装了iconv包形式端口集合。我写了

AC_CHECK_HEADER([iconv.h], ,[AC_MSG_ERROR([can not find iconv.h])]) AC_CHECK_LIB([iconv], [iconv_open], ,[AC_MSG_ERROR([can not find iconv_open])])

当我运行./configure时,在configure.ac.But中

,它给了我以下消息

checking iconv.h usability... no

checking iconv.h presence... no

checking for iconv.h... no

configure: error: can not find iconv.h

我确信iconv.hlibiconv.la目录中有libiconv.so/usr/local/include/usr/local/lib。那么我应该如何编写正确的语句到检查头文件和库。谢谢提前!!

3 个答案:

答案 0 :(得分:1)

您不应以任何方式修改configure.ac。用户负责告诉工具链在哪里查找库。对于用户(运行configure时就是你的用户),一件容易的事就是设置config.site以便设置适当的标志。例如,在.bashrc:export CONFIG_SITE=$HOME/CONFIG_SITE中,然后在$HOME/CONFIG_SITE中,例如:

test "$prefix" = NONE && pfx=/usr/local || pfx=$prefix
: ${CPPFLAGS=-I$pfx/include}
: ${LDFLAGS=-L$pfx/lib}

这将向编译器和链接器插入适当的标志,以便始终查看一些常见位置。

答案 1 :(得分:0)

编译器默认情况下不会搜索路径/usr/local/include/usr/local/lib。您可以修改configure.ac脚本中的CFLAGSLDFLAGS变量:

CFLAGS="$CFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib"

在检查标题和库之前添加这两行。

可能您可能必须设置CPPFLAGS(对于预处理器)和CXXFLAGS(如果您正在构建C ++代码),以添加包含路径。

编辑:如威廉·普尔塞尔所说,在configure.ac中设置这些标志并非真正推荐。而是在调用生成的configure脚本时将它们设置为环境变量:

$ CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure

答案 2 :(得分:0)

始终有AM_ICONV automake宏(iconv.m4),它是GNU gettext的一部分。你不需要使用gettext.m4。