You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Autoconf检测Perl头文件可用性(已解决)

如何用Autoconf检查Perl头文件可用性?

我正在开发一个开源应用,需要有条件地集成Perl用于文本处理(此仅为信息说明,请勿质疑该理念:-))。想请教下,通常如何用autoconf检查Perl头文件是否可用?

在我的configure.ac中,对于带有pkg-config文件的组件,我使用如下配置:

PKG_CHECK_MODULES(GTK, gtk+-3.0, [AC_DEFINE([HAVE_GTK_3], 1, [Define to 1 if GTK+ 3 is present])])
PKG_CHECK_MODULES(SQLITE, sqlite3, [AC_DEFINE([HAVE_SQLITE], 1, [Define to 1 if SQLite is present])])

但遗憾的是,Perl并未提供.pc文件。目前我在Makefile.in中使用perl -MExtUtils::Embed -e ccopts -e ldopts生成编译器标志,而非调用pkg-config。想知道有没有更规范的实现方式?

我曾尝试以下配置:

AC_CHECK_HEADER([perl.h], AC_DEFINE(HAVE_PERL, 1, [Define to 1 if Perl headers are present]))

但结果并不奏效:

checking for perl.h... no

在我的系统中(大部分系统应该都是如此),perl.h并不在/usr/include目录下:

gforgx@shinjitsu nf $ locate perl.h | tail -n 1
/usr/lib64/perl5/CORE/perl.h

是否存在一种不使用automake及AM_宏的合规方式,来扩展AC_CHECK_HEADER的搜索路径?

我尝试修改CPPFLAGS后情况有所改善,但仍存在问题(可能是由于perl.h依赖其他头文件),出现如下警告:

configure: WARNING: perl.h: present but cannot be compiled
configure: WARNING: perl.h:     check for missing prerequisite headers?
configure: WARNING: perl.h: see the Autoconf documentation
configure: WARNING: perl.h:     section "Present But Cannot Be Compiled"
configure: WARNING: perl.h: proceeding with the compiler's result
configure: WARNING:     ## ------------------------------------ ##
configure: WARNING:     ## Report this to gforgx@protonmail.com ##
configure: WARNING:     ## ------------------------------------ ##
checking for perl.h... no

更新:可行配置

最终以下配置可以正常工作:

PERL_CPPFLAGS=`perl -MExtUtils::Embed -e ccopts`
PERL_LIBS=`perl -MExtUtils::Embed -e ldopts`

old_CPPFLAGS="$CPPFLAGS"
old_LIBS="$LIBS"
CPPFLAGS="$CPPFLAGS $PERL_CPPFLAGS"
LIBS="$LIBS $PERL_LIBS"

# TODO: figure out why first option doesn't work
#AC_CHECK_HEADER([perl.h], AC_DEFINE(HAVE_PERL, 1, [Define to 1 if Perl headers are present]))
AC_CHECK_FUNCS(perl_construct, AC_DEFINE(HAVE_PERL, 1, [Define to 1 if Perl headers are present]))

CPPFLAGS="$old_CPPFLAGS"
LIBS="$old_LIBS"

内容的提问来源于stack exchange,提问作者Sergey S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:50:26