我正在尝试为我的业余爱好内核构建一个工具链,但是在构建Newlib时我遇到了问题.每当我尝试autoreconf
在newlib/libc/sys /下的kernels目录中运行时,我都会收到错误:
configure.in:5: error: support for Cygnus-style trees has been removed
这是configure.in的内容(基本上,取自以下教程):
AC_PREREQ(2.59) AC_INIT([newlib], [NEWLIB_VERSION]) AC_CONFIG_SRCDIR([crt0.S]) AC_CONFIG_AUX_DIR(../../../..) NEWLIB_CONFIGURE(../../..) AC_CONFIG_FILES([Makefile]) AC_OUTPUT
和Makefile.am的源代码(再次主要来自教程):
AUTOMAKE_OPTIONS = cygnus INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) AM_CCASFLAGS = $(INCLUDES) noinst_LIBRARIES = lib.a if MAY_SUPPLY_SYSCALLS extra_objs = $(lpfx)syscalls.o else extra_objs = endif lib_a_SOURCES = lib_a_LIBADD = $(extra_objs) EXTRA_lib_a_SOURCES = syscalls.c crt0.S lib_a_DEPENDENCIES = $(extra_objs) lib_a_CCASFLAGS = $(AM_CCASFLAGS) lib_a_CFLAGS = $(AM_CFLAGS) if MAY_SUPPLY_SYSCALLS all: crt0.o endif ACLOCAL_AMFLAGS = -I ../../.. CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
是的,我试过删除AUTOMAKE_OPTIONS=cygnus
.
我用Google搜索并试图理解这一点,据我所知,这是因为我正在使用的autotools的版本.根据我最初使用的教程(OSDev - 操作系统特定工具链),我需要一个旧版本.我的问题是我正在使用Kubuntu,它使用了apt包管理器,而且该版本甚至不能暂时退回.必须有一些解决方案.要么Newlib已经过时了(这个版本是从2013年12月开始......),或者开发人员因为取决于过时的autotools版本而疯狂.
我能想到的另一件事是,这是来自newlib配置方案本身的消息,在这种情况下我不知道如何修改我的configure.in和Makefile.am以与新的newlib配置格式保持一致.那个教程是我发现的唯一一个没有使用libgloss(我不想做的)到目前为止,并且在newlib的文档中缺少添加新目标的文档(或者我错过了一些东西) .
这是一些版本信息:
系统:Kubuntu 14.04
Automake:1.14.1
Autoconf:2.69
Newlib:2.1.0
Diego Elio P.. 5
不幸的是,我担心使用automake 1.12或更早版本是你唯一的选择.Automake1.11
如果我没有弄错的话,Ubuntu有一个独立的软件包来帮助你,因为1.12和1.14之间的兼容性通常很好,但在此之前它是不稳定的.
不幸的是,我担心使用automake 1.12或更早版本是你唯一的选择.Automake1.11
如果我没有弄错的话,Ubuntu有一个独立的软件包来帮助你,因为1.12和1.14之间的兼容性通常很好,但在此之前它是不稳定的.