使用当前的autotools移植Newlib

 姚扰腾 发布于 2023-01-12 12:21

我正在尝试为我的业余爱好内核构建一个工具链,但是在构建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之间的兼容性通常很好,但在此之前它是不稳定的.

1 个回答
  • 不幸的是,我担心使用automake 1.12或更早版本是你唯一的选择.Automake1.11如果我没有弄错的话,Ubuntu有一个独立的软件包来帮助你,因为1.12和1.14之间的兼容性通常很好,但在此之前它是不稳定的.

    2023-01-12 12:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有