【发布时间】:2014-06-01 03:10:25
【问题描述】:
我正在尝试为我的爱好内核构建一个工具链,但在构建 Newlib 时遇到了问题。每当我尝试在 newlib/libc/sys/ 下的内核目录中运行 autoreconf 时,都会出现错误:
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。
我已经用谷歌搜索并试图理解这一点,据我所知,这是因为我使用的 autotools 版本。根据我最初使用的教程(OSDev - OS Specific Toolchain),我需要一个旧版本。我的问题是我正在使用 Kubuntu,它使用 apt 包管理器,并且该版本甚至暂时无法回退。必须对此进行一些修复。要么 Newlib 已经过时(这个版本是从 2013 年 12 月开始...),要么开发人员对依赖过时的 autotools 版本感到疯狂。
我唯一能想到的另一件事是,这是来自 newlib 配置方案本身的消息,在这种情况下,我不知道如何修改我的 configure.in 和 Makefile.am 以与新的 newlib 配置格式保持一致。该教程是迄今为止我发现的唯一一个没有使用 libgloss(我不想这样做)的教程,并且 newlib 的文档中缺少添加新目标的文档(或者我错过了一些东西) .
这里是一些版本信息:
- 系统:Kubuntu 14.04
- 自动制作:1.14.1
- 自动配置:2.69
- 新库:2.1.0
【问题讨论】:
标签: operating-system kernel autotools