我正在使用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])])
,它给了我以下消息
checking iconv.h usability... no
checking iconv.h presence... no
checking for iconv.h... no
configure: error: can not find iconv.h
我确信iconv.h
和libiconv.la
目录中有libiconv.so
,/usr/local/include
,/usr/local/lib
。那么我应该如何编写正确的语句到检查头文件和库。谢谢提前!!
答案 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脚本中的CFLAGS
和LDFLAGS
变量:
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。