我正试图为我的业余爱好内核构建一个工具链,但在构建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_OUTPUTMakefile.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。
我在谷歌上搜索过,并试图理解这一点,据我所知,这是因为我正在使用的自动工具的版本。根据我最初使用的教程(OSDev - OS专用工具链),我需要一个更老的版本。我的问题是,我使用的是Kubuntu,它使用apt包管理器,而且该版本甚至无法暂时恢复。一定有办法解决这个问题。要么是Newlib过时了(这个版本是2013年12月发布的.)或者,开发人员疯狂地依赖于过时的自动工具版本。
我唯一能想到的另一件事是,这是来自newlib配置方案本身的消息,在这种情况下,我不知道如何修改我的configure.in和Makefile.am,使其与新的newlib配置格式保持一致。到目前为止,我发现只有这个教程没有使用libgloss (我不想这么做),添加一个新目标的文档在newlib的文档中非常缺乏(或者我遗漏了一些东西)。
以下是一些版本信息:
发布于 2014-06-04 15:41:59
不幸的是,我担心使用自动1.12或更高版本是您唯一的选择。如果我没有弄错的话,Ubuntu有一个单独的Automake1.11包来帮助您,因为1.12和1.14之间的兼容性通常是很好的,但在此之前它是不稳定的。
发布于 2015-07-09 23:38:17
我正在为那些为描述这里的教程而挣扎的人写这个答案。
我与您(或以前)的情况相同,我正在从头构建一个内核,并希望将newlib移植到我的工具链中。不幸的是,我认为这个教程已经过时了,因为我完全按照说明,甚至安装了正确的版本(包括正确的newlib版本)正确的软件。以上所接受的解决方案对我无效,但我找到了另一个可能对其他人有效的解决方案:
步骤1-获得正确的软件
步骤2-构建过程
Untar这两个档案:
tar xf automake-1.12.tar.gz
tar xf autoconf-2.65.tar.gz创建目标文件夹:
mkdir ~/bin创建一个构建文件夹:
mkdir build
cd build首先配置自动化:
../automake-1.12/configure --prefix="~/bin"制作和安装
make && make install现在让我们配置autoconf。
../autoconf-2.65/configure --prefix=~/bin然后制作并安装:
make && make install现在您应该在~/bin中有适当的二进制文件了!
步骤3-更新路径
要将这些二进制文件临时添加到您的路径中(建议):
export PATH=~/bin:$PATH一旦您更新了您的路径,重新运行autoconf和autoreconf,它应该会完成。
https://stackoverflow.com/questions/23976423
复制相似问题