0

我正在使用 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.ac中。但是当我运行./configure时,它给了我以下消息

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.lalibiconv.so/usr/local/include/usr/local/lib

4

3 回答 3

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}

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

于 2012-07-27T19:58:07.380 回答
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正如 William Pursell 所指出的,设置这些标志并不是真正推荐的。configure相反,您在调用生成的脚本时将这些设置为环境变量:

$ CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure
于 2012-07-27T08:08:36.223 回答
0

总是有AM_ICONV automake 宏 (iconv.m4),它是 GNU gettext 的一部分。您无需使用 gettext.m4。

于 2012-07-27T18:05:58.123 回答