为什么 Readline 不能作为 autoconf 中的子目录工作?
我正在尝试将项目迁移到自动工具,但在集成我们使用的第三方库时遇到了困难。有些以基本方式工作:(以下内容在我的configure.ac中)
AC_CONFIG_SUBDIRS([thirdparty/sqlite])
AC_CONFIG_SUBDIRS([thirdparty/protobuf])
但readline没有:
AC_CONFIG_SUBDIRS([thirdparty/readline])
当我尝试autoreconf时,我收到此错误:
brett@Brett-Thinkpad:~/auto3$ autoreconf
autoheader: warning: missing template: CTYPE_NON_ASCII
autoheader: Use AC_DEFINE([CTYPE_NON_ASCII], [], [Description])
autoheader: warning: missing template: FIONREAD_IN_SYS_IOCTL
autoheader: warning: missing template: HAVE_BSD_SIGNALS
autoheader: warning: missing template: HAVE_GETPW_DECLS
autoheader: warning: missing template: HAVE_LANGINFO_CODESET
autoheader: warning: missing template: HAVE_MBRLEN
autoheader: warning: missing template: HAVE_MBSCMP
autoheader: warning: missing template: HAVE_MBSNRTOWCS
autoheader: warning: missing template: HAVE_MBSRTOWCS
autoheader: warning: missing template: HAVE_MBSTATE_T
autoheader: warning: missing template: HAVE_POSIX_SIGNALS
autoheader: warning: missing template: HAVE_POSIX_SIGSETJMP
autoheader: warning: missing template: HAVE_STRUCT_DIRENT_D_FILENO
autoheader: warning: missing template: HAVE_STRUCT_DIRENT_D_INO
autoheader: warning: missing template: HAVE_USG_SIGHOLD
autoheader: warning: missing template: HAVE_WCRTOMB
autoheader: warning: missing template: HAVE_WCSCOLL
autoheader: warning: missing template: HAVE_WCSDUP
autoheader: warning: missing template: HAVE_WCTYPE
autoheader: warning: missing template: HAVE_WCWIDTH
autoheader: warning: missing template: MUST_REINSTALL_SIGHANDLERS
autoheader: warning: missing template: NO_MULTIBYTE_SUPPORT
autoheader: warning: missing template: SPEED_T_IN_SYS_TYPES
autoheader: warning: missing template: STRCOLL_BROKEN
autoheader: warning: missing template: STRUCT_WINSIZE_IN_SYS_IOCTL
autoheader: warning: missing template: STRUCT_WINSIZE_IN_TERMIOS
autoheader: warning: missing template: TIOCSTAT_IN_SYS_IOCTL
autoheader: warning: missing template: VOID_SIGHANDLER
autoreconf: /usr/bin/autoheader failed with exit status: 1
The Readline source appears to beorganized in the same way作为 SQLite 和 Protobuf - ./configure &&制作&& make install 对于这三个程序的工作原理相同。 readline 有什么不同? (我正在使用 Readline 版本 6.2)
(抱歉,如果这是基本的......我刚刚开始使用 Autotools)
I'm trying to migrate a project to autotools, got stuck with integrating the third party libraries we use. Some work the basic way: (the following is in my configure.ac)
AC_CONFIG_SUBDIRS([thirdparty/sqlite])
AC_CONFIG_SUBDIRS([thirdparty/protobuf])
But readline doesn't:
AC_CONFIG_SUBDIRS([thirdparty/readline])
When I try autoreconf, I get this error:
brett@Brett-Thinkpad:~/auto3$ autoreconf
autoheader: warning: missing template: CTYPE_NON_ASCII
autoheader: Use AC_DEFINE([CTYPE_NON_ASCII], [], [Description])
autoheader: warning: missing template: FIONREAD_IN_SYS_IOCTL
autoheader: warning: missing template: HAVE_BSD_SIGNALS
autoheader: warning: missing template: HAVE_GETPW_DECLS
autoheader: warning: missing template: HAVE_LANGINFO_CODESET
autoheader: warning: missing template: HAVE_MBRLEN
autoheader: warning: missing template: HAVE_MBSCMP
autoheader: warning: missing template: HAVE_MBSNRTOWCS
autoheader: warning: missing template: HAVE_MBSRTOWCS
autoheader: warning: missing template: HAVE_MBSTATE_T
autoheader: warning: missing template: HAVE_POSIX_SIGNALS
autoheader: warning: missing template: HAVE_POSIX_SIGSETJMP
autoheader: warning: missing template: HAVE_STRUCT_DIRENT_D_FILENO
autoheader: warning: missing template: HAVE_STRUCT_DIRENT_D_INO
autoheader: warning: missing template: HAVE_USG_SIGHOLD
autoheader: warning: missing template: HAVE_WCRTOMB
autoheader: warning: missing template: HAVE_WCSCOLL
autoheader: warning: missing template: HAVE_WCSDUP
autoheader: warning: missing template: HAVE_WCTYPE
autoheader: warning: missing template: HAVE_WCWIDTH
autoheader: warning: missing template: MUST_REINSTALL_SIGHANDLERS
autoheader: warning: missing template: NO_MULTIBYTE_SUPPORT
autoheader: warning: missing template: SPEED_T_IN_SYS_TYPES
autoheader: warning: missing template: STRCOLL_BROKEN
autoheader: warning: missing template: STRUCT_WINSIZE_IN_SYS_IOCTL
autoheader: warning: missing template: STRUCT_WINSIZE_IN_TERMIOS
autoheader: warning: missing template: TIOCSTAT_IN_SYS_IOCTL
autoheader: warning: missing template: VOID_SIGHANDLER
autoreconf: /usr/bin/autoheader failed with exit status: 1
The Readline source appears to be organized in the same way as SQLite and Protobuf - ./configure && make && make install works the same for all three. What's different about readline? (I'm using Readline version 6.2)
(Sorry if this is basic...I'm just getting started with Autotools)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不熟悉 readline 源代码,但我猜想您或 readline 使用的是过时版本的自动工具。这并不能阻止
./configure &&制作&& make install
无法正常工作,因为当您下载 tarball 时,您会获得版本不兼容的自动工具已经生成的configure
和Makefile
。但这确实意味着您无法使用您的自动工具版本生成新的。您可以通过执行错误消息告诉您的操作来修复它:添加一大堆行,例如
thirdparty/readline/configure.ac
。或者,如果问题出在您身上,请升级到最新的自动工具。如需更具体和有效的建议,请在您的问题中包含有问题的
configure.ac
并告诉我们您正在使用的自动工具的版本。I'm not familiar with the readline sources, but I'd guess that either you or readline are using an obsolete version of the autotools. That doesn't stop
./configure && make && make install
from working, since when you download the tarball you get theconfigure
andMakefile
s that the incompatibly-versioned autotools have already generated. But it does mean you can't generate new ones with your version of autotools.You can probably fix it by just doing what the error message tells you: add a whole bunch of lines like
to
thirdparty/readline/configure.ac
. Or upgrade to the latest autotools if the problem is on your end.For more specific and effective advice, include the offending
configure.ac
in your question and tell us the version of autotools you're using.