linux之crosstool-NG(1)生成toolchain

打印 上一主题 下一主题

主题 1013|帖子 1013|积分 3039

Linux之crosstool-NG(1)生成交叉编译Toolchain

  
   Author: Once Day Date: 2025年2月25日


  一位热衷于Linux学习和开辟的菜鸟,试图谱写一场冒险之旅,也许尽头只是一场白日梦…


  本文相干内容翻译自crosstool-NG官方文档。


   漫漫长路,有人对你微笑过嘛…


  全系列文章可参考专栏: buildroot编译框架_Once_day的博客-CSDN博客。


  参考文章:
  

  • Buildroot - Making Embedded Linux Easy
  • crosstool-NG
  • Documentation (crosstool-ng.github.io)
  • crosstool-ng/crosstool-ng: A versatile (cross-)toolchain generator. (github.com)
  • Yann E. MORIN - Re: Tutorial
  

  
1. 概述

1.1 简介

Crosstool-NG 是一款用于创建交叉编译器的开源工具。交叉编译器是一种特别类型的编译器,可以在一种类型的计算机上(称为“主机”)为另一种类型的计算机(称为“目标”)生成可执行代码。这对于嵌入式系统开辟者特别有效,他们需要在功能强盛的主机上为资源受限的目标装备(如 ARM 或 MIPS 微控制器)生成代码。
以下是 Crosstool-NG 的重要功能和作用:

  • 自定义构建: Crosstool-NG 允许用户选择他们想要的特定版本的 GCC,glibc 和 binutils,以及其他的库和工具。这意味着你可以根据项目需求创建一个精细调整的工具链。
  • 设置界面:Crosstool-NG 提供了一个基于菜单的设置界面,供用户选择各种选项,如工具链的组件版本、目标体系结构、硬件浮点设置等。
  • 并行构建:Crosstool-NG 支持并行构建,这可以明显加快工具链的构建时间。
  • 多平台支持:Crosstool-NG 支持多种目标体系结构,包括 ARM、MIPS、PowerPC、x86 和更多。
  • 补丁系统:如果需要,可以通过补丁系统对源代码举行修改,以顺应特定的需求。
  • 生成工具链:末了,Crosstool-NG 会生成一个可在主机上运行的交叉编译工具链,以生成目标装备的可执行代码。
总的来说,Crosstool-NG 是一个强盛的工具,它可以帮助开辟者创建、定制和管理交叉编译工具链,从而简化了嵌入式开辟流程。
1.2 背景

crosstool-NG旨在构建工具链。工具链是软件开辟项目中必不可少的组成部分。它将编译、组装和链接正在开辟的代码。工具链的某些部分终极会出现在生成的二进制文件中: 静态库只是一个例子。
因此,工具链是一个非常敏感的软件部分,因为其中一个组件或设置不当的组件中的任何错误都可能导致执行题目,包括性能不佳、应用程序不测结束、软件行为不当(通常很难检测到)、硬件损坏,甚至是人为风险(这非常令人遗憾)。
工具链是由差别的软件组成的,每个软件都非常复杂,需要特别设计的选项来构建和无缝地工作。这通常不那么轻易,纵然是在原生工具链的情况下。当涉及到交叉编译时,工作达到了更高的复杂性,这可能会成为一场噩梦……
互联网上存在一些跨工具链,可以用于一般开辟,但它们有许多限制:


  • 它们可以是通用的,因为它们是为大多数人设置的。
  • 没有针对特定目标举行优化。
  • 它们可能是为特定的目标而准备的,因此不轻易使用,也不适合优化,甚至不支持你的目标。
  • 他们常常使用老旧的组件(编译器、C库等),不支持你极新处置惩罚器的特别功能。
另一方面,这些工具链提供了一些上风:


  • 他们已经准备好使用,很轻易安装和设置。
  • 如果被广泛的社区使用,它们是经过验证的。
但是,一旦想要充分使用特定硬件,就需要构建本身的工具链。这就是crosstool-NG发挥作用的地方。还有许多工具可以为特定需求构建工具链,这些工具实际上是不可伸缩的。例子有:


  • builroot,其重要目标是构建根文件系统,因此得名。但是,一旦拥有了带有buildroot的工具链,其中的一部分将安装在将来的根(sysroot)中,因此,如果想要构建一个全新的根(sysroot),要么必须将现有的根保存为模板并稍后规复它,要么从头开始重新启动,这不太方便。
  • 对于其他项目(例如,openenembedded.org,Yocto Project),同样用于构建根文件系统。
crosstool-NG的真正目标是构建工具链,而且仅仅是工具链。然后你就可以按照你想要的方式使用它。
NG的意思是下一代(Next Generation),经过So Yann的整理,脚本,文件,和软件包都相应的更新过,并形成了当前使用的crosstool版本。
1.3 编译类型

参考文档:https://crosstool-ng.github.io/docs/toolchain-types/
你可能会遇到四种类型的工具链。起首,你必须相识以下内容:当涉及到编译器时,最多会涉及四台呆板:


  • 设置工具链组件的呆板:设置呆板(config machine)。
  • 构建工具链组件的呆板:构建呆板(build machine)。
  • 运行工具链的呆板:主机(host machine)。
  • 工具链为其生成代码的目标呆板:目标呆板(target machine)。
我们通常可以假设设置呆板和构建呆板是雷同的。大多数情况下,这是正确的。唯一的例外是,如果你使用分布式编译(如distcc)。为了简单起见,让我们暂时忽略这一点。
以是我们只剩下三台呆板:构建呆板(build),主机(host),目标呆板(target)
任何工具链都会涉及这三台呆板。这一点你可以像确信"2加2等于4"一样确信。它们是这样发挥作用的:


  • 构建呆板 == 主机 == 目标呆板 (“本地(native)”),这是一个普通的本地工具链,针对的是与构建它的呆板完全雷同的呆板,并再次在完全雷同的呆板上运行。当你想使用更新的组件时,好比更新的gcc,你必须构建这样一个工具链。
  • 构建呆板 == 主机 != 目标呆板 (“交叉(cross)”),这是一个经典的交叉工具链,它盼望在编译它的同一台呆板上运行,并生成代码在第二台呆板(目标呆板)上运行。
  • 构建呆板 != 主机 == 目标呆板 (“交叉-本地(cross-native)”),这样的工具链也是一个本地工具链,因为它的目标呆板与运行它的呆板雷同。但它是在另一台呆板上构建的。当移植到新的架构时,或者如果构建呆板比主机快得多时,你需要这样一个工具链。
  • 构建呆板 != 主机 != 目标呆板 (“加拿大(canadian)”), 这个工具链被称为"加拿大交叉"工具链,很棘手。涉及的三台呆板都不雷同。如果你有一台快速的构建呆板,但用户将在另一台呆板上使用它,并且将生成代码在第三台呆板上运行,你可能需要这样一个工具链。
    术语"加拿大交叉"的由来是因为其时在讨论所有这些题目时,加拿大有三个全国性的政党(根据维基百科)。
crosstool-NG可以构建所有这些类型的工具链,或者至少是朝这个方向努力的。不过,也有一些需要注意的地方。
在构建"本地"工具链时,crosstool-ng目前仍然会为目标呆板编译新版本的libc。目前还没有办法将系统libc和/或系统内核头文件作为工具链的一部分。如果你选择兼容的版本(即,用工具链编译的应用程序将加载系统libc),这可能会奏效。
可以将"交叉-本地"工具链构建为"加拿大"工具链的一个平常的案例。这并不理想,因为它会使crosstool-NG两次编译针对主机的工具(第一次,作为所有加拿大构建的先决条件的单独工具链;第二次,作为加拿大构建本身的一部分创建的临时工具链的一部分)。将来可能会对此举行改进。
要构建"加拿大"工具链,你必须先构建一个在构建呆板上运行并以主机为目标的工具链作为先决条件(即一个简单的交叉工具链)。然后,将这个先决条件的/bin目次添加到$PATH情况变量中,并设置加拿大工具链,将先决条件工具链的目标指定为新工具链的主机。
crosstool-NG附带了一些加拿大工具链的示例。加拿大示例的名称由两个逗号分隔的部分组成,即HOST,TARGET。它们需要HOST示例作为先决条件。例如:
  1. ct-ng x86_64-w64-mingw32
  2. ct-ng build
  3. PATH=~/x-tools/x86_64-w64-mingw32/bin:$PATH
  4. ct-ng x86_64-w64-mingw32,x86_64-pc-linux-gnu
  5. ct-ng build
复制代码
请注意,你将无法在构建呆板上运行加拿大工具链生成的二进制文件!你需要将它们转移到运行设置为主机的操作系统的呆板上。
1.4 交叉工具链的构建过程

参考文档:https://crosstool-ng.github.io/docs/toolchain-construction/
我想要一个交叉编译器!你说的这个工具链是什么?
   交叉编译器实际上是一组精密协作的差别工具的聚集。这些工具分列成一种级联式的链,一个工具的输出成为另一个工具的输入,终极生成在呆板上运行的实际二进制代码。以是,我们称这种安排为"工具链"。当工具链旨在为与运行它的呆板差别的呆板生成代码时,这被称为交叉工具链。
  那么,工具链中有哪些组件呢?
工具链中起作用的组件起首是编译器本身。编译器将源代码(C、C++等)转换为汇编代码。首选的编译器是GNU编译器聚集,众所周知的gcc。
汇编代码由汇编器解释,以生成目标代码。这是由二进制工具完成的,如GNU binutils。
一旦生成了差别的目标代码文件,它们就会被聚合在一起形成终极的可执行二进制文件。这称为链接,是通过使用链接器实现的。GNU binutils也附带了一个链接器。
到目前为止,我们得到了一个完整的工具链,能够将源代码转换为实际的可执行代码。根据在目标呆板上运行的操作系统或没有操作系统,我们还需要C库。C库提供了一个标准的抽象层,用于执行基本任务(如分配内存、在终端上打印输出、管理文件访问等)。有许多C库,每个都针对差别的系统。对于Linux桌面,有glibc、eglibc,甚至uClibc;对于嵌入式Linux,你可以选择eglibc或uClibc;而对于没有操作系统的系统,你可以使用newlib、dietlibc,甚至不使用任何库。还有一些其他的C库,但它们没有那么广泛使用,或针对非常特定的需求(例如,klibc是C库的一个非常小的子集,旨在构建受限的初始ramdisk)。
在Linux下,C库需要知道内核的API,以决定存在哪些功能,如果需要,为缺失的功能包含什么仿真。该API由内核头文件提供。注意:这是特定于Linux的(可能还有极少数其他系统),其他操作系统上的C库不需要内核头文件。
现在,所有这些组件是如何链接在一起的?
到目前为止,所有重要组件都已涵盖,但它们仍需要以特定的次序构建。这里我们看到了依赖关系,从我们终极要使用的编译器开始。我们称该编译器为终极编译器。
   终极编译器(Final compiler)需要C库(C library),以知道如何使用它,但是:
  构建C库需要编译器。
  C library => Final compiler
  A需要B,而B需要A。这是经典的先有鸡还是先有蛋的题目。办理方法是构建一个精简的编译器,它不需要C库,但能够构建C库。我们称之为bootstrap、初始或核心编译器。以是这里是新的依赖列表:
   终极编译器需要C库(C library),以知道如何使用它,
  构建C库需要核心编译器(Core compiler),但是:
  核心编译器需要C库头文件(C library headers)和启动文件(start files),以知道如何使用C库。
  C library headers + start files => Core compiler => C library => Final compiler
  B需要C,而C需要B。又是先有鸡还是先有蛋。为了办理这个题目,我们需要构建一个C库,它只安装头文件和启动文件。启动文件(也称为"C运行时(C runtime)"或CRT)是gcc需要的极少数文件,用于在NPTL系统上启用线程本地存储(TLS)。以是现在我们有:
   终极编译器需要C库(C library),以知道如何使用它,
  构建C库(C library)需要核心编译器(Core compiler)
  核心编译器需要C库头文件(C library headers)和启动文件(start files),以知道如何使用C库,但是:
  构建启动文件(start files)需要编译器
  ???compiler => C library headers + start files => Core compiler => C library => Final compiler
  天哪……C需要D,而D需要C,又来了。以是我们需要构建一个更简单的编译器,它不需要头文件,也不需要启动文件。这个编译器也是一个bootstrap、初始或核心编译器。为了区分这两个核心编译器,我们称前者为核心pass 2(core pass 2),称后者为核心pass 1(core pass 1)。依赖列表变为:
   终极编译器需要C库(C library),以知道如何使用它,
  构建C库(C library)需要编译器(Core compiler pass 2)
  核心pass 2编译器(Core compiler pass 2)需要C库头文件(C library headers)和启动文件(start files),以知道如何使用C库
  构建启动文件需要编译器(Core compiler pass 1)
  我们需要一个核心pass 1编译器(Core compiler pass 1)
  Core compiler pass 1=> C library headers + start files => Core compiler pass 2 => C library => Final compiler
  正如我们前面所说,C库也需要内核头文件(Kernel headers)。内核头文件没有要求,以是在这种情况下就结束了:
   终极编译器需要C库(C library),以知道如何使用它,
  构建C库(C library)需要编译器(Core compiler pass 2)
  核心pass 2编译器(Core compiler pass 2)需要C库头文件(C library headers)和启动文件(start files),以知道如何使用C库
  构建启动文件需要编译器(Core compiler pass 1)和内核头文件(Kernel headers)
  我们需要一个核心pass 1编译器(Core compiler pass 1)
  Core compiler pass 1 + Kernel headers => C library headers + start files => Core compiler pass 2 => C library => Final compiler
  我们需要添加一些新的要求。当我们为目标编译代码时,我们需要汇编器(Assembler)和链接器(linker)。这样的代码当然是从C库构建的,以是我们需要在C库启动文件之前构建binutils,以及完整的C库本身。别的,gcc中的一些代码也将在目标上运行。幸运的是,binutils没有要求。以是,我们的依赖链如下:
   终极编译器需要C库(C library),以知道如何使用它,以及binutils ,
  构建C库(C library)需要编译器(Core compiler pass 2)和binutils
  核心pass 2编译器(Core compiler pass 2)需要C库头文件(C library headers)和启动文件(start files),以知道如何使用C库,以及binutils
  构建启动文件需要编译器(Core compiler pass 1)和内核头文件(Kernel headers)和binutils
  核心pass 1编译器(Core compiler pass 1)需要binutils
  binutils => Core compiler pass 1 + Kernel headers => C library headers + start files => Core compiler pass 2 => C library => Final compiler
  这转化为以下构建组件的次序:
   binutils
  核心pass 1编译器(Core compiler pass 1)
  内核头文件(Kernel headers)
  C库头文件和启动文件(C library headers + start files)
  核心pass 2编译器(Core compiler pass 2)
  完整的C库(C library)
  终极编译器(Final compiler)
  太棒了!但我们完成了吗?
事实上,还没有,仍然缺少依赖项。就工具本身而言,我们不需要其他任何东西。
但是gcc有一些先决条件。它依赖一些外部库来执行一些非平常的任务(例如在常量中处置惩罚复数)。有几个选项可以构建这些库。起首,人们可能会想依靠Linux发行版来提供这些库。唉,直到最近,它们还没有广泛提供。以是,如果发行版不是太新,我们很可能必须本身构建这些库(我们在下面构建)。受影响的库是:


  • GNU多精度算术库,GMP;
  • 用于具有正确舍入的多精度浮点计算的C库,MPFR;
  • 用于复数算术的C库,MPC。
这些库的依赖关系是:


  • MPC需要GMP和MPFR。
  • MPFR需要GMP。
  • GMP没有先决条件。
以是,构建次序变成:
   GNU多精度算术库(GMP)
  用于具有正确舍入的多精度浮点计算的C库(MPFR)
  用于复数算术的C库(MPC)
  binutils
  核心pass 1编译器(Core compiler pass 1)
  内核头文件(Kernel headers)
  C库头文件和启动文件(C library headers + start files)
  核心pass 2编译器(Core compiler pass 2)
  完整的C库(C library)
  终极编译器(Final compiler)
  完成了!还是还有呢?
这现在足以构建一个功能性的工具链。以是如果你现在已经足够了,可以在这里停下来。或者如果你很好奇,可以继承阅读。
gcc还可以使用一些其他外部库。这些附加的可选库用于在gcc中启用高级特性,例如循环优化(GRAPHITE)和链接时优化(LTO)。如果你想使用这些功能,你还需要三个附加库:
要启用GRAPHITE,根据GCC版本,它可能需要以下一个或多个:


  • Parma多面体库,PPL;
  • 整数集库,ISL;
  • 使用PPL后端的分块循环生成器,CLooG/PPL;
  • 使用ISL后端的分块循环生成器,CLooG。
要启用LTO:


  • ELF目标文件访问库,libelf。
这些库的依赖关系是:
   PPL需要GMP;
  CLooG/PPL需要GMP和PPL或ISL之一;
  ISL没有先决条件;
  libelf没有先决条件。
  现在的列表看起来像:
   GNU多精度算术库(GMP)
  用于具有正确舍入的多精度浮点计算的C库(MPFR)
  用于复数算术的C库(MPC)
  Parma多面体库(PPL,循环优化(GRAPHITE))
  整数集库(ISL,循环优化(GRAPHITE))
  分块循环生成器(CLooG,循环优化(GRAPHITE))
  ELF目标文件访问库(ELF,链接时优化(LTO))
  binutils
  核心pass 1编译器(Core compiler pass 1)
  内核头文件(Kernel headers)
  C库头文件和启动文件(C library headers + start files)
  核心pass 2编译器(Core compiler pass 2)
  完整的C库(C library)
  终极编译器(Final compiler)
  这个列表现在完整了,哇哦,是吗?但是为什么crosstool-NG有更多步调?
从理论的角度来看,这十三个步调已经是必要的步调了。但实际上,还是有一些小的差异;crosstool-NG中额外步调有三个差别的缘故原由。
起首,GNU binutils不支持某些类型的输出。使用binutils无法生成平面二进制文件,以是我们必须使用另一个组件来添加这种支持:elf2flt。elf2flt还需要zlib压缩库——如果我们正在构建加拿大或交叉本地工具链,我们可能无法使用主机的zlib。
其次,在某些主机操作系统上,工具链的本地化需要额外的库:gettext和libiconv。
第三,crosstool-NG还可以构建一些额外的调试实用程序以在目标上运行。这就是我们构建的地方,例如,交叉gdb、gdbserver和本机gdb(后两个在目标上运行,第一个在与工具链雷同的呆板上运行)。其他的(strace、ltrace、DUMA和dmalloc)与工具链完全无关,但在开辟时可以提供很大帮助,以是作为额外的好东西包含进来(而且构建起来相称轻易,以是没题目;更复杂的东西不值得花力气包含在crosstool-NG中)。
2. 编译ARM64交叉编译工具链

2.1 创建host主机情况

下面文档里官方枚举了一些常见系统的运行情况搭建过程,包括Linux,Windows,FreeBSD,Macos:


  • Setting up host OS (crosstool-ng.github.io)
Linux系统和其他装备不一样,官方默认Linux系统使用Docker来搭建编译情况,紧跟时代潮流,dockerfile也放在了源码目次下面,如下面所示:
  1. FROM ubuntu:22.04
  2. ARG CTNG_UID=1000
  3. ARG CTNG_GID=1000
  4. RUN groupadd -g $CTNG_GID ctng
  5. RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng
  6. # Non-interactive configuration of tzdata
  7. ENV DEBIAN_FRONTEND noninteractive
  8. ENV DEBCONF_NONINTERACTIVE_SEEN true
  9. RUN { echo 'tzdata tzdata/Areas select Etc'; echo 'tzdata tzdata/Zones/Etc select UTC'; } | debconf-set-selections
  10. RUN apt-get update
  11. RUN apt-get install -y gcc g++ gperf bison flex texinfo help2man make libncurses5-dev \
  12.     python3-dev autoconf automake libtool libtool-bin gawk wget bzip2 xz-utils unzip \
  13.     patch libstdc++6 rsync git meson ninja-build
  14. RUN wget -O /sbin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64
  15. RUN chmod a+x /sbin/dumb-init
  16. RUN echo 'export PATH=/opt/ctng/bin:$PATH' >> /etc/profile
  17. ENTRYPOINT [ "/sbin/dumb-init", "--" ]
复制代码
这个是ubuntu 22.04的设置,其他系统和linux分发版设置请查看对应dockerfile,这里不多说了。
下面直接安装好这些软件,docker操作有些麻烦(重要是下载)。
2.2 安装crosstool-ng

crosstool-NG 是一个用于构建交叉编译工具链的工具,支持多种架构(如 ARM、MIPS、RISC-V 等)。以下是根据官方文档 https://crosstool-ng.github.io/docs/install/ 先容的 安装方法
在安装 crosstool-NG 之前,需要先安装一些必备的软件包:
对于 Ubuntu/Debian:
  1. sudo apt update
  2. sudo apt install -y autoconf automake libtool libncurses-dev \
  3.     flex bison gperf texinfo help2man gawk libtool-bin \
  4.     libssl-dev bash patch gzip bzip2 perl tar cpio unzip rsync \
  5.     file bc wget python3
复制代码
对于 CentOS/RHEL:
  1. sudo yum groupinstall -y "Development Tools"
  2. sudo yum install -y ncurses-devel flex bison gperf texinfo \
  3.     help2man gawk libtool libtool-ltdl-devel \
  4.     openssl-devel patch gzip bzip2 perl tar cpio unzip rsync \
  5.     file bc wget python3
复制代码
对于 macOS(使用 Homebrew):
  1. brew install autoconf automake libtool gawk gnu-sed \
  2.     bison flex texinfo help2man wget
复制代码
下载并安装 crosstool-NG:
方法 1:从官方 Git 仓库安装(保举)
  1. git clone https://github.com/crosstool-ng/crosstool-ng.git
复制代码
方法 2:安装已发布的稳固版
如果不想从 GitHub 克隆最新代码,可以下载稳固版:
  1. wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-latest.tar.bz2
  2. tar -xjf crosstool-ng-latest.tar.bz2
复制代码
然后是进入crosstool-ng目次,设置和编译crosstool-ng文件,末了安装到系统目次下面(也可以不安装):
  1. cd crosstool-ng
  2. ./bootstrap                              #  用于生成 configure。
  3. ./configure  --prefix=/   # --enable-local 允许在当前目录下执行 crosstool-ng,无需全局安装。
  4. make
  5. make install # 这一步安装到系统根目录下
复制代码
2.3 设置crosstool-ng

使用 Crosstool-NG 定制交叉工具链的第一步,是下载和解压源代码包。然后进入解压后的目次,运行 ./configure 脚本设置编译安装选项,如指定安装目次等。设置完成后,接着运行 make 编译 Crosstool-NG 自身,再运行 make install 将其安装到之前指定的目次中。
有了 Crosstool-NG 工具之后,就可以开始创建本身的工具链设置了。运行 ct-ng menuconfig 即可打开一个交互式的设置界面。在这里,起首设置一些全局的选项,如 Crosstool-NG 的安装路径、工作目次、源码包下载存放目次等。
接下来,就要针对目标平台,举行一系列细节的设置。在 Target options 菜单下,可以选择 CPU 架构、字长、是否有浮点处置惩罚器等。Toolchain options 菜单可以指定工具链的名称前缀和版本号、使用的 C 库等。如果是为 Linux 系统编译,则在 Operating System 下设置内核头文件和目标系统的一些参数。
别的,binutils、gcc、C 库是构成工具链的核心组件,也要分别到 Binary utilities、C compiler、C-library 等菜单项中选择它们的详细版本和设置。所有设置完成后,保存退出,就生成了一个名为 .config 的设置文件。
末了,在设置好的目次下执行 ct-ng build,Crosstool-NG 就会自动下载源码包并启动编译构建过程,直到工具链安装完成。在 <工作目次>/x-tools/<工具链名称> 下,就可以找到交叉编译好的工具链文件了。
通过对设置文件的差别组合,可以用 Crosstool-NG 在同一台主机上同时设置构建多套差别目标的交叉工具链。编译过程中,还可以运行 ct-ng clean 清理临时文件。日后要升级更新工具链,修改设置里的版本号,重新运行构建命令即可,非常机动方便。
实际设置时,需要注意静态编译和Plugin之间存在辩论,然后编译的时候,非必要二进制文件都不要编译,等工具链编译出来,可以慢慢再编译其他的软件包。
2.4 开始编译

起首需要下载软件包,好比下面这种(网络欠好会下载很慢,需要使用一点小本领):
  1. onceday->crosstool:# ll src/
  2. total 289940
  3. drwxrwxr-x 2 onceday onceday      4096 Feb 27 22:51 ./
  4. drwxrwxr-x 4 onceday onceday      4096 Feb 27 22:35 ../
  5. -rw-rw-r-- 1 onceday onceday  28174300 Feb 27 23:44 binutils-2.43.1.tar.xz
  6. -rw-rw-r-- 1 onceday onceday    460560 Feb 27 23:44 expat-2.5.0.tar.xz
  7. -rw-rw-r-- 1 onceday onceday  87909952 Feb 27 23:44 gcc-13.3.0.tar.xz
  8. -rw-rw-r-- 1 onceday onceday  24426680 Feb 27 23:44 gdb-16.2.tar.xz
  9. -rw-rw-r-- 1 onceday onceday  11038556 Feb 27 23:44 gettext-0.23.1.tar.xz
  10. -rw-rw-r-- 1 onceday onceday  18752204 Feb 27 23:44 glibc-2.40.tar.xz
  11. -rw-rw-r-- 1 onceday onceday   2094196 Feb 27 23:44 gmp-6.3.0.tar.xz
  12. -rw-rw-r-- 1 onceday onceday   2035560 Feb 27 23:44 isl-0.26.tar.xz
  13. -rw-rw-r-- 1 onceday onceday   5166734 Feb 27 23:44 libiconv-1.16.tar.gz
  14. -rw-rw-r-- 1 onceday onceday 104565100 Feb 27 23:44 linux-4.14.329.tar.xz
  15. -rw-rw-r-- 1 onceday onceday    773573 Feb 27 23:44 mpc-1.3.1.tar.gz
  16. -rw-rw-r-- 1 onceday onceday   1493608 Feb 27 23:44 mpfr-4.2.1.tar.xz
  17. -rw-rw-r-- 1 onceday onceday   3612591 Feb 27 23:44 ncurses-6.4.tar.gz
  18. -rw-rw-r-- 1 onceday onceday   2642452 Feb 27 23:44 strace-6.13.tar.xz
  19. -rw-rw-r-- 1 onceday onceday   1305740 Feb 27 23:44 zlib-1.3.1.tar.xz
  20. -rw-rw-r-- 1 onceday onceday   2406875 Feb 27 23:44 zstd-1.5.6.tar.gz
复制代码
然后启动ct-ng build即可,不过很轻易在GLIBC和GCC编译过程中堕落,以是最好是把crosstool-ng的调试打开,支持断点重试。
编译完成之后,可以将x-tools目次打包,作为工具链(GCC和LIBC聚集体)。
编译的Target根目次是x-tools/aarch64-onceday-linux-gnu/aarch64-onceday-linux-gnu/sysroot。
  1. onceday->gnu-tool:$ file ~/x-tools/aarch64-onceday-linux-gnu/aarch64-onceday-linux-gnu/sysroot/usr/bin/getent
  2. /home/onceday/x-tools/aarch64-onceday-linux-gnu/aarch64-onceday-linux-gnu/sysroot/usr/bin/getent: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=888828ba766ed708f46a25db39a8422bd1044afe, for GNU/Linux 4.14.255, with debug_info, not stripped
复制代码
这里面是预编译出来的二进制文件,可以在目标Linux系统直接运行:
  1. root@linux:~# ./getent -v  
  2. ./getent: invalid option -- 'v'
  3. Try `getent --help' or `getent --usage' for more information.
复制代码
3. 附件(参考设置)

  1. #
  2. # Automatically generated file; DO NOT EDIT.
  3. # crosstool-NG 1.27.0 Configuration
  4. #
  5. CT_CONFIGURE_has_static_link=y
  6. CT_CONFIGURE_has_cxx11=y
  7. CT_CONFIGURE_has_wget=y
  8. CT_CONFIGURE_has_curl=y
  9. CT_CONFIGURE_has_meson=y
  10. CT_CONFIGURE_has_ninja=y
  11. CT_CONFIGURE_has_make_3_81_or_newer=y
  12. CT_CONFIGURE_has_make_4_0_or_newer=y
  13. CT_CONFIGURE_has_libtool_2_4_or_newer=y
  14. CT_CONFIGURE_has_libtoolize_2_4_or_newer=y
  15. CT_CONFIGURE_has_autoconf_2_65_or_newer=y
  16. CT_CONFIGURE_has_autoreconf_2_65_or_newer=y
  17. CT_CONFIGURE_has_automake_1_15_or_newer=y
  18. CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y
  19. CT_CONFIGURE_has_python_3_4_or_newer=y
  20. CT_CONFIGURE_has_bison_2_7_or_newer=y
  21. CT_CONFIGURE_has_bison_3_0_4_or_newer=y
  22. CT_CONFIGURE_has_python=y
  23. CT_CONFIGURE_has_git=y
  24. CT_CONFIGURE_has_md5sum=y
  25. CT_CONFIGURE_has_sha1sum=y
  26. CT_CONFIGURE_has_sha256sum=y
  27. CT_CONFIGURE_has_sha512sum=y
  28. CT_CONFIGURE_has_install_with_strip_program=y
  29. CT_VERSION="1.27.0"
  30. CT_VCHECK=""
  31. CT_CONFIG_VERSION_ENV="4"
  32. CT_CONFIG_VERSION_CURRENT="4"
  33. CT_CONFIG_VERSION="4"
  34. CT_MODULES=y
  35. #
  36. # Paths and misc options
  37. #
  38. #
  39. # crosstool-NG behavior
  40. #
  41. # CT_OBSOLETE is not set
  42. # CT_EXPERIMENTAL is not set
  43. # CT_DEBUG_CT is not set
  44. #
  45. # Paths
  46. #
  47. CT_LOCAL_TARBALLS_DIR="${HOME}/crosstool/src"
  48. CT_SAVE_TARBALLS=y
  49. # CT_TARBALLS_BUILDROOT_LAYOUT is not set
  50. CT_WORK_DIR="${CT_TOP_DIR}/.build"
  51. CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
  52. CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build"
  53. CT_PREFIX_DIR="${CT_PREFIX:-${HOME}/x-tools}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
  54. CT_RM_RF_PREFIX_DIR=y
  55. CT_REMOVE_DOCS=y
  56. CT_INSTALL_LICENSES=y
  57. CT_PREFIX_DIR_RO=y
  58. CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y
  59. # CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES is not set
  60. #
  61. # Downloading
  62. #
  63. CT_DOWNLOAD_AGENT_WGET=y
  64. # CT_DOWNLOAD_AGENT_CURL is not set
  65. # CT_DOWNLOAD_AGENT_NONE is not set
  66. # CT_FORBID_DOWNLOAD is not set
  67. # CT_FORCE_DOWNLOAD is not set
  68. CT_CONNECT_TIMEOUT=10
  69. CT_DOWNLOAD_WGET_OPTIONS="--tries=3 -nc --progress=dot:binary"
  70. # CT_ONLY_DOWNLOAD is not set
  71. # CT_USE_MIRROR is not set
  72. CT_VERIFY_DOWNLOAD_DIGEST=y
  73. CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y
  74. # CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set
  75. # CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set
  76. # CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set
  77. CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512"
  78. # CT_VERIFY_DOWNLOAD_SIGNATURE is not set
  79. #
  80. # Extracting
  81. #
  82. # CT_FORCE_EXTRACT is not set
  83. CT_OVERRIDE_CONFIG_GUESS_SUB=y
  84. # CT_ONLY_EXTRACT is not set
  85. CT_PATCH_BUNDLED=y
  86. # CT_PATCH_BUNDLED_LOCAL is not set
  87. CT_PATCH_ORDER="bundled"
  88. #
  89. # Build behavior
  90. #
  91. CT_PARALLEL_JOBS=0
  92. CT_LOAD=""
  93. CT_USE_PIPES=y
  94. CT_EXTRA_CFLAGS_FOR_BUILD=""
  95. CT_EXTRA_CXXFLAGS_FOR_BUILD=""
  96. CT_EXTRA_LDFLAGS_FOR_BUILD=""
  97. CT_EXTRA_CFLAGS_FOR_HOST=""
  98. CT_EXTRA_LDFLAGS_FOR_HOST=""
  99. # CT_CONFIG_SHELL_SH is not set
  100. # CT_CONFIG_SHELL_ASH is not set
  101. CT_CONFIG_SHELL_BASH=y
  102. # CT_CONFIG_SHELL_CUSTOM is not set
  103. CT_CONFIG_SHELL="${bash}"
  104. #
  105. # Logging
  106. #
  107. # CT_LOG_ERROR is not set
  108. # CT_LOG_WARN is not set
  109. # CT_LOG_INFO is not set
  110. CT_LOG_EXTRA=y
  111. # CT_LOG_ALL is not set
  112. # CT_LOG_DEBUG is not set
  113. CT_LOG_LEVEL_MAX="EXTRA"
  114. # CT_LOG_SEE_TOOLS_WARN is not set
  115. CT_LOG_PROGRESS_BAR=y
  116. CT_LOG_TO_FILE=y
  117. CT_LOG_FILE_COMPRESS=y
  118. # end of Paths and misc options
  119. #
  120. # Target options
  121. #
  122. # CT_ARCH_ALPHA is not set
  123. # CT_ARCH_ARC is not set
  124. CT_ARCH_ARM=y
  125. # CT_ARCH_AVR is not set
  126. # CT_ARCH_BPF is not set
  127. # CT_ARCH_M68K is not set
  128. # CT_ARCH_MIPS is not set
  129. # CT_ARCH_NIOS2 is not set
  130. # CT_ARCH_POWERPC is not set
  131. # CT_ARCH_PRU is not set
  132. # CT_ARCH_RISCV is not set
  133. # CT_ARCH_S390 is not set
  134. # CT_ARCH_SH is not set
  135. # CT_ARCH_SPARC is not set
  136. # CT_ARCH_X86 is not set
  137. # CT_ARCH_XTENSA is not set
  138. CT_ARCH="arm"
  139. CT_ARCH_CHOICE_KSYM="ARM"
  140. CT_ARCH_CPU=""
  141. CT_ARCH_TUNE=""
  142. CT_ARCH_ARM_SHOW=y
  143. #
  144. # Options for arm
  145. #
  146. CT_ARCH_ARM_PKG_KSYM=""
  147. CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR BPF C6X LM32 LOONGARCH M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 OPENRISC PARISC POWERPC PRU RISCV S390 SH SPARC TRICORE X86 XTENSA"
  148. CT_ARCH_SUFFIX=""
  149. # CT_OMIT_TARGET_VENDOR is not set
  150. #
  151. # Generic target options
  152. #
  153. # CT_MULTILIB is not set
  154. CT_DEMULTILIB=y
  155. CT_ARCH_SUPPORTS_BOTH_MMU=y
  156. CT_ARCH_DEFAULT_HAS_MMU=y
  157. CT_ARCH_USE_MMU=y
  158. CT_ARCH_SUPPORTS_FLAT_FORMAT=y
  159. CT_ARCH_SUPPORTS_LIBSANITIZER=y
  160. CT_ARCH_SUPPORTS_EITHER_ENDIAN=y
  161. CT_ARCH_DEFAULT_LE=y
  162. # CT_ARCH_BE is not set
  163. CT_ARCH_LE=y
  164. CT_ARCH_ENDIAN="little"
  165. CT_ARCH_SUPPORTS_32=y
  166. CT_ARCH_SUPPORTS_64=y
  167. CT_ARCH_DEFAULT_32=y
  168. CT_ARCH_BITNESS=64
  169. # CT_ARCH_32 is not set
  170. CT_ARCH_64=y
  171. #
  172. # Target optimisations
  173. #
  174. CT_ARCH_SUPPORTS_WITH_ARCH=y
  175. CT_ARCH_SUPPORTS_WITH_CPU=y
  176. CT_ARCH_SUPPORTS_WITH_TUNE=y
  177. CT_ARCH_EXCLUSIVE_WITH_CPU=y
  178. CT_ARCH_ARCH=""
  179. CT_TARGET_CFLAGS=""
  180. CT_TARGET_LDFLAGS=""
  181. # end of Target options
  182. #
  183. # Toolchain options
  184. #
  185. #
  186. # General toolchain options
  187. #
  188. CT_FORCE_SYSROOT=y
  189. CT_USE_SYSROOT=y
  190. CT_SYSROOT_NAME="sysroot"
  191. CT_SYSROOT_DIR_PREFIX=""
  192. CT_WANTS_STATIC_LINK=y
  193. CT_WANTS_STATIC_LINK_CXX=y
  194. CT_STATIC_TOOLCHAIN=y
  195. CT_SHOW_CT_VERSION=y
  196. CT_TOOLCHAIN_PKGVERSION=""
  197. CT_TOOLCHAIN_BUGURL=""
  198. #
  199. # Tuple completion and aliasing
  200. #
  201. CT_TARGET_VENDOR="onceday"
  202. CT_TARGET_ALIAS_SED_EXPR=""
  203. CT_TARGET_ALIAS=""
  204. #
  205. # Toolchain type
  206. #
  207. CT_CROSS=y
  208. # CT_CANADIAN is not set
  209. CT_TOOLCHAIN_TYPE="cross"
  210. #
  211. # Build system
  212. #
  213. CT_BUILD=""
  214. CT_BUILD_PREFIX=""
  215. CT_BUILD_SUFFIX=""
  216. #
  217. # Misc options
  218. #
  219. CT_TOOLCHAIN_ENABLE_NLS=y
  220. # end of Toolchain options
  221. #
  222. # Operating System
  223. #
  224. CT_KERNEL_SUPPORTS_SHARED_LIBS=y
  225. # CT_KERNEL_BARE_METAL is not set
  226. CT_KERNEL_LINUX=y
  227. CT_KERNEL="linux"
  228. CT_KERNEL_CHOICE_KSYM="LINUX"
  229. CT_KERNEL_LINUX_SHOW=y
  230. #
  231. # Options for linux
  232. #
  233. CT_KERNEL_LINUX_PKG_KSYM="LINUX"
  234. CT_LINUX_DIR_NAME="linux"
  235. CT_LINUX_PKG_NAME="linux"
  236. CT_LINUX_SRC_RELEASE=y
  237. # CT_LINUX_SRC_DEVEL is not set
  238. CT_LINUX_PATCH_ORDER="global"
  239. # CT_LINUX_V_6_13 is not set
  240. # CT_LINUX_V_6_12 is not set
  241. # CT_LINUX_V_6_11 is not set
  242. # CT_LINUX_V_6_10 is not set
  243. # CT_LINUX_V_6_9 is not set
  244. # CT_LINUX_V_6_8 is not set
  245. # CT_LINUX_V_6_7 is not set
  246. # CT_LINUX_V_6_6 is not set
  247. # CT_LINUX_V_6_5 is not set
  248. # CT_LINUX_V_6_4 is not set
  249. # CT_LINUX_V_6_3 is not set
  250. # CT_LINUX_V_6_2 is not set
  251. # CT_LINUX_V_6_1 is not set
  252. # CT_LINUX_V_6_0 is not set
  253. # CT_LINUX_V_5_19 is not set
  254. # CT_LINUX_V_5_18 is not set
  255. # CT_LINUX_V_5_17 is not set
  256. # CT_LINUX_V_5_16 is not set
  257. # CT_LINUX_V_5_15 is not set
  258. # CT_LINUX_V_5_14 is not set
  259. # CT_LINUX_V_5_13 is not set
  260. # CT_LINUX_V_5_12 is not set
  261. # CT_LINUX_V_5_11 is not set
  262. # CT_LINUX_V_5_10 is not set
  263. # CT_LINUX_V_5_9 is not set
  264. # CT_LINUX_V_5_8 is not set
  265. # CT_LINUX_V_5_7 is not set
  266. # CT_LINUX_V_5_4 is not set
  267. # CT_LINUX_V_5_3 is not set
  268. # CT_LINUX_V_5_2 is not set
  269. # CT_LINUX_V_5_1 is not set
  270. # CT_LINUX_V_5_0 is not set
  271. # CT_LINUX_V_4_20 is not set
  272. # CT_LINUX_V_4_19 is not set
  273. # CT_LINUX_V_4_18 is not set
  274. # CT_LINUX_V_4_17 is not set
  275. # CT_LINUX_V_4_16 is not set
  276. # CT_LINUX_V_4_15 is not set
  277. CT_LINUX_V_4_14=y
  278. # CT_LINUX_V_4_13 is not set
  279. # CT_LINUX_V_4_12 is not set
  280. # CT_LINUX_V_4_11 is not set
  281. # CT_LINUX_V_4_10 is not set
  282. # CT_LINUX_V_4_9 is not set
  283. # CT_LINUX_V_4_4 is not set
  284. # CT_LINUX_V_4_1 is not set
  285. # CT_LINUX_V_3_16 is not set
  286. # CT_LINUX_V_3_13 is not set
  287. # CT_LINUX_V_3_12 is not set
  288. # CT_LINUX_V_3_10 is not set
  289. CT_LINUX_VERSION="4.14.329"
  290. CT_LINUX_MIRRORS="$(CT_Mirrors kernel.org linux ${CT_LINUX_VERSION})"
  291. CT_LINUX_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  292. CT_LINUX_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  293. CT_LINUX_ARCHIVE_FORMATS=".tar.xz .tar.gz"
  294. CT_LINUX_SIGNATURE_FORMAT="unpacked/.sign"
  295. CT_LINUX_5_19_or_older=y
  296. CT_LINUX_older_than_5_19=y
  297. CT_LINUX_5_12_or_older=y
  298. CT_LINUX_older_than_5_12=y
  299. CT_LINUX_5_5_or_older=y
  300. CT_LINUX_older_than_5_5=y
  301. CT_LINUX_5_3_or_older=y
  302. CT_LINUX_older_than_5_3=y
  303. CT_LINUX_later_than_4_8=y
  304. CT_LINUX_4_8_or_later=y
  305. CT_LINUX_later_than_3_7=y
  306. CT_LINUX_3_7_or_later=y
  307. CT_LINUX_REQUIRE_3_7_or_later=y
  308. CT_LINUX_later_than_3_2=y
  309. CT_LINUX_3_2_or_later=y
  310. CT_LINUX_REQUIRE_3_2_or_later=y
  311. CT_KERNEL_has_rsync=y
  312. CT_KERNEL_DEP_RSYNC=y
  313. CT_KERNEL_LINUX_VERBOSITY_0=y
  314. # CT_KERNEL_LINUX_VERBOSITY_1 is not set
  315. # CT_KERNEL_LINUX_VERBOSITY_2 is not set
  316. CT_KERNEL_LINUX_VERBOSE_LEVEL=0
  317. CT_KERNEL_LINUX_INSTALL_CHECK=y
  318. CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS"
  319. #
  320. # Common kernel options
  321. #
  322. CT_SHARED_LIBS=y
  323. # end of Operating System
  324. #
  325. # Binary utilities
  326. #
  327. CT_ARCH_BINFMT_ELF=y
  328. CT_BINUTILS_BINUTILS=y
  329. CT_BINUTILS="binutils"
  330. CT_BINUTILS_CHOICE_KSYM="BINUTILS"
  331. CT_BINUTILS_BINUTILS_SHOW=y
  332. #
  333. # Options for binutils
  334. #
  335. CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS"
  336. CT_BINUTILS_DIR_NAME="binutils"
  337. CT_BINUTILS_USE_GNU=y
  338. # CT_BINUTILS_USE_ORACLE is not set
  339. CT_BINUTILS_USE="BINUTILS"
  340. CT_BINUTILS_PKG_NAME="binutils"
  341. CT_BINUTILS_SRC_RELEASE=y
  342. # CT_BINUTILS_SRC_DEVEL is not set
  343. CT_BINUTILS_PATCH_ORDER="global"
  344. CT_BINUTILS_V_2_43=y
  345. # CT_BINUTILS_V_2_42 is not set
  346. # CT_BINUTILS_V_2_41 is not set
  347. # CT_BINUTILS_V_2_40 is not set
  348. # CT_BINUTILS_V_2_39 is not set
  349. # CT_BINUTILS_V_2_38 is not set
  350. # CT_BINUTILS_V_2_37 is not set
  351. # CT_BINUTILS_V_2_36 is not set
  352. # CT_BINUTILS_V_2_35 is not set
  353. # CT_BINUTILS_V_2_34 is not set
  354. # CT_BINUTILS_V_2_33 is not set
  355. # CT_BINUTILS_V_2_32 is not set
  356. # CT_BINUTILS_V_2_31 is not set
  357. # CT_BINUTILS_V_2_30 is not set
  358. # CT_BINUTILS_V_2_29 is not set
  359. # CT_BINUTILS_V_2_28 is not set
  360. # CT_BINUTILS_V_2_27 is not set
  361. # CT_BINUTILS_V_2_26 is not set
  362. CT_BINUTILS_VERSION="2.43.1"
  363. CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)"
  364. CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  365. CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  366. CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
  367. CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig"
  368. CT_BINUTILS_later_than_2_41=y
  369. CT_BINUTILS_2_41_or_later=y
  370. CT_BINUTILS_later_than_2_39=y
  371. CT_BINUTILS_2_39_or_later=y
  372. CT_BINUTILS_later_than_2_30=y
  373. CT_BINUTILS_2_30_or_later=y
  374. CT_BINUTILS_later_than_2_27=y
  375. CT_BINUTILS_2_27_or_later=y
  376. CT_BINUTILS_later_than_2_26=y
  377. CT_BINUTILS_2_26_or_later=y
  378. #
  379. # GNU binutils
  380. #
  381. CT_BINUTILS_GOLD_SUPPORTS_ARCH=y
  382. CT_BINUTILS_GOLD_SUPPORT=y
  383. CT_BINUTILS_FORCE_LD_BFD_DEFAULT=y
  384. # CT_BINUTILS_LINKER_LD is not set
  385. CT_BINUTILS_LINKER_LD_GOLD=y
  386. CT_BINUTILS_GOLD_INSTALLED=y
  387. CT_BINUTILS_GOLD_THREADS=y
  388. CT_BINUTILS_LINKER_BOTH=y
  389. CT_BINUTILS_LINKERS_LIST="ld,gold"
  390. # CT_BINUTILS_LD_WRAPPER is not set
  391. CT_BINUTILS_LINKER_DEFAULT="bfd"
  392. # CT_BINUTILS_PLUGINS is not set
  393. CT_BINUTILS_RELRO=m
  394. CT_BINUTILS_DETERMINISTIC_ARCHIVES=y
  395. CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
  396. # CT_BINUTILS_FOR_TARGET is not set
  397. CT_ALL_BINUTILS_CHOICES="BINUTILS"
  398. # end of Binary utilities
  399. #
  400. # C-library
  401. #
  402. CT_LIBC_GLIBC=y
  403. # CT_LIBC_MUSL is not set
  404. # CT_LIBC_UCLIBC_NG is not set
  405. CT_LIBC="glibc"
  406. CT_LIBC_CHOICE_KSYM="GLIBC"
  407. CT_LIBC_GLIBC_SHOW=y
  408. #
  409. # Options for glibc
  410. #
  411. CT_LIBC_GLIBC_PKG_KSYM="GLIBC"
  412. CT_GLIBC_DIR_NAME="glibc"
  413. CT_GLIBC_USE_GNU=y
  414. # CT_GLIBC_USE_ORACLE is not set
  415. CT_GLIBC_USE="GLIBC"
  416. CT_GLIBC_PKG_NAME="glibc"
  417. CT_GLIBC_SRC_RELEASE=y
  418. # CT_GLIBC_SRC_DEVEL is not set
  419. CT_GLIBC_PATCH_ORDER="global"
  420. # CT_GLIBC_V_2_41 is not set
  421. CT_GLIBC_V_2_40=y
  422. # CT_GLIBC_V_2_39 is not set
  423. # CT_GLIBC_V_2_38 is not set
  424. # CT_GLIBC_V_2_37 is not set
  425. # CT_GLIBC_V_2_36 is not set
  426. # CT_GLIBC_V_2_35 is not set
  427. # CT_GLIBC_V_2_34 is not set
  428. # CT_GLIBC_V_2_33 is not set
  429. # CT_GLIBC_V_2_32 is not set
  430. # CT_GLIBC_V_2_31 is not set
  431. # CT_GLIBC_V_2_30 is not set
  432. # CT_GLIBC_V_2_29 is not set
  433. # CT_GLIBC_V_2_28 is not set
  434. # CT_GLIBC_V_2_27 is not set
  435. # CT_GLIBC_V_2_26 is not set
  436. # CT_GLIBC_V_2_25 is not set
  437. # CT_GLIBC_V_2_24 is not set
  438. # CT_GLIBC_V_2_23 is not set
  439. # CT_GLIBC_V_2_19 is not set
  440. # CT_GLIBC_V_2_17 is not set
  441. CT_GLIBC_VERSION="2.40"
  442. CT_GLIBC_MIRRORS="$(CT_Mirrors GNU glibc)"
  443. CT_GLIBC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  444. CT_GLIBC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  445. CT_GLIBC_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
  446. CT_GLIBC_SIGNATURE_FORMAT="packed/.sig"
  447. CT_GLIBC_2_41_or_older=y
  448. CT_GLIBC_older_than_2_41=y
  449. CT_GLIBC_later_than_2_38=y
  450. CT_GLIBC_2_38_or_later=y
  451. CT_GLIBC_later_than_2_37=y
  452. CT_GLIBC_2_37_or_later=y
  453. CT_GLIBC_later_than_2_36=y
  454. CT_GLIBC_2_36_or_later=y
  455. CT_GLIBC_later_than_2_34=y
  456. CT_GLIBC_2_34_or_later=y
  457. CT_GLIBC_later_than_2_32=y
  458. CT_GLIBC_2_32_or_later=y
  459. CT_GLIBC_later_than_2_31=y
  460. CT_GLIBC_2_31_or_later=y
  461. CT_GLIBC_later_than_2_30=y
  462. CT_GLIBC_2_30_or_later=y
  463. CT_GLIBC_later_than_2_29=y
  464. CT_GLIBC_2_29_or_later=y
  465. CT_GLIBC_later_than_2_28=y
  466. CT_GLIBC_2_28_or_later=y
  467. CT_GLIBC_later_than_2_27=y
  468. CT_GLIBC_2_27_or_later=y
  469. CT_GLIBC_later_than_2_26=y
  470. CT_GLIBC_2_26_or_later=y
  471. CT_GLIBC_later_than_2_25=y
  472. CT_GLIBC_2_25_or_later=y
  473. CT_GLIBC_later_than_2_24=y
  474. CT_GLIBC_2_24_or_later=y
  475. CT_GLIBC_later_than_2_23=y
  476. CT_GLIBC_2_23_or_later=y
  477. CT_GLIBC_later_than_2_20=y
  478. CT_GLIBC_2_20_or_later=y
  479. CT_GLIBC_later_than_2_17=y
  480. CT_GLIBC_2_17_or_later=y
  481. CT_GLIBC_later_than_2_14=y
  482. CT_GLIBC_2_14_or_later=y
  483. CT_GLIBC_DEP_KERNEL_HEADERS_VERSION=y
  484. CT_GLIBC_DEP_BINUTILS=y
  485. CT_GLIBC_DEP_GCC=y
  486. CT_GLIBC_DEP_PYTHON=y
  487. CT_THREADS="nptl"
  488. CT_GLIBC_BUILD_SSP=y
  489. CT_GLIBC_HAS_LIBIDN_ADDON=y
  490. # CT_GLIBC_USE_LIBIDN_ADDON is not set
  491. CT_GLIBC_NO_SPARC_V8=y
  492. CT_GLIBC_HAS_OBSOLETE_LIBCRYPT=y
  493. CT_GLIBC_EXTRA_CONFIG_ARRAY=""
  494. CT_GLIBC_CONFIGPARMS=""
  495. CT_GLIBC_ENABLE_DEBUG=y
  496. CT_GLIBC_EXTRA_CFLAGS=""
  497. # CT_GLIBC_ENABLE_OBSOLETE_LIBCRYPT is not set
  498. # CT_GLIBC_DISABLE_VERSIONING is not set
  499. CT_GLIBC_OLDEST_ABI=""
  500. CT_GLIBC_FORCE_UNWIND=y
  501. # CT_GLIBC_LOCALES is not set
  502. # CT_GLIBC_KERNEL_VERSION_NONE is not set
  503. CT_GLIBC_KERNEL_VERSION_AS_HEADERS=y
  504. # CT_GLIBC_KERNEL_VERSION_CHOSEN is not set
  505. CT_GLIBC_MIN_KERNEL="4.14.329"
  506. CT_GLIBC_SSP_DEFAULT=y
  507. # CT_GLIBC_SSP_NO is not set
  508. # CT_GLIBC_SSP_YES is not set
  509. # CT_GLIBC_SSP_ALL is not set
  510. # CT_GLIBC_SSP_STRONG is not set
  511. CT_GLIBC_ENABLE_WERROR=y
  512. # CT_GLIBC_ENABLE_COMMON_FLAG is not set
  513. CT_ALL_LIBC_CHOICES="AVR_LIBC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE PICOLIBC UCLIBC_NG"
  514. CT_LIBC_SUPPORT_THREADS_ANY=y
  515. CT_LIBC_SUPPORT_THREADS_NATIVE=y
  516. #
  517. # Common C library options
  518. #
  519. CT_THREADS_NATIVE=y
  520. # CT_CREATE_LDSO_CONF is not set
  521. CT_LIBC_XLDD=y
  522. # end of C-library
  523. #
  524. # C compiler
  525. #
  526. CT_CC_CORE_NEEDED=y
  527. CT_CC_SUPPORT_CXX=y
  528. CT_CC_SUPPORT_FORTRAN=y
  529. CT_CC_SUPPORT_ADA=y
  530. CT_CC_SUPPORT_D=y
  531. CT_CC_SUPPORT_JIT=y
  532. CT_CC_SUPPORT_OBJC=y
  533. CT_CC_SUPPORT_OBJCXX=y
  534. CT_CC_SUPPORT_GOLANG=y
  535. CT_CC_GCC=y
  536. CT_CC="gcc"
  537. CT_CC_CHOICE_KSYM="GCC"
  538. CT_CC_GCC_SHOW=y
  539. #
  540. # Options for gcc
  541. #
  542. CT_CC_GCC_PKG_KSYM="GCC"
  543. CT_GCC_DIR_NAME="gcc"
  544. CT_GCC_USE_GNU=y
  545. # CT_GCC_USE_ORACLE is not set
  546. CT_GCC_USE="GCC"
  547. CT_GCC_PKG_NAME="gcc"
  548. CT_GCC_SRC_RELEASE=y
  549. # CT_GCC_SRC_DEVEL is not set
  550. CT_GCC_PATCH_ORDER="global"
  551. # CT_GCC_V_14 is not set
  552. CT_GCC_V_13=y
  553. # CT_GCC_V_12 is not set
  554. # CT_GCC_V_11 is not set
  555. # CT_GCC_V_10 is not set
  556. # CT_GCC_V_9 is not set
  557. # CT_GCC_V_8 is not set
  558. # CT_GCC_V_7 is not set
  559. # CT_GCC_V_6 is not set
  560. CT_GCC_VERSION="13.3.0"
  561. CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})"
  562. CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  563. CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  564. CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz"
  565. CT_GCC_SIGNATURE_FORMAT=""
  566. CT_GCC_14_or_older=y
  567. CT_GCC_older_than_14=y
  568. CT_GCC_later_than_13=y
  569. CT_GCC_13_or_later=y
  570. CT_GCC_later_than_12=y
  571. CT_GCC_12_or_later=y
  572. CT_GCC_later_than_11=y
  573. CT_GCC_11_or_later=y
  574. CT_GCC_later_than_10=y
  575. CT_GCC_10_or_later=y
  576. CT_GCC_later_than_9=y
  577. CT_GCC_9_or_later=y
  578. CT_GCC_later_than_8=y
  579. CT_GCC_8_or_later=y
  580. CT_GCC_later_than_7=y
  581. CT_GCC_7_or_later=y
  582. CT_GCC_later_than_6=y
  583. CT_GCC_6_or_later=y
  584. CT_GCC_REQUIRE_6_or_later=y
  585. CT_GCC_later_than_5=y
  586. CT_GCC_5_or_later=y
  587. CT_GCC_REQUIRE_5_or_later=y
  588. CT_GCC_later_than_4_9=y
  589. CT_GCC_4_9_or_later=y
  590. CT_GCC_REQUIRE_4_9_or_later=y
  591. CT_CC_GCC_GOLD=y
  592. CT_CC_GCC_HAS_LIBMPX=y
  593. CT_CC_GCC_ENABLE_CXX_FLAGS=""
  594. CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY=""
  595. CT_CC_GCC_EXTRA_CONFIG_ARRAY=""
  596. CT_CC_GCC_STATIC_LIBSTDCXX=y
  597. # CT_CC_GCC_SYSTEM_ZLIB is not set
  598. CT_CC_GCC_CONFIG_TLS=m
  599. #
  600. # Optimisation features
  601. #
  602. CT_CC_GCC_USE_GRAPHITE=y
  603. # CT_CC_GCC_USE_LTO is not set
  604. #
  605. # Settings for libraries running on target
  606. #
  607. # CT_CC_GCC_ENABLE_DEFAULT_PIE is not set
  608. CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y
  609. CT_CC_GCC_LIBSTDCXX=m
  610. # CT_CC_GCC_LIBSTDCXX_HOSTED_DISABLE is not set
  611. # CT_CC_GCC_LIBMUDFLAP is not set
  612. # CT_CC_GCC_LIBGOMP is not set
  613. # CT_CC_GCC_LIBSSP is not set
  614. # CT_CC_GCC_LIBQUADMATH is not set
  615. CT_CC_GCC_LIBSANITIZER=m
  616. CT_CC_GCC_LIBSTDCXX_VERBOSE=m
  617. #
  618. # Misc. obscure options.
  619. #
  620. CT_CC_CXA_ATEXIT=y
  621. CT_CC_GCC_TM_CLONE_REGISTRY=m
  622. # CT_CC_GCC_DISABLE_PCH is not set
  623. CT_CC_GCC_SJLJ_EXCEPTIONS=m
  624. CT_CC_GCC_LDBL_128=m
  625. CT_CC_GCC_BUILD_ID=y
  626. CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y
  627. # CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set
  628. # CT_CC_GCC_LNK_HASH_STYLE_GNU is not set
  629. # CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set
  630. CT_CC_GCC_LNK_HASH_STYLE=""
  631. CT_CC_GCC_DEC_FLOATS_AUTO=y
  632. # CT_CC_GCC_DEC_FLOATS_BID is not set
  633. # CT_CC_GCC_DEC_FLOATS_DPD is not set
  634. # CT_CC_GCC_DEC_FLOATS_NO is not set
  635. CT_CC_GCC_DEC_FLOATS=""
  636. CT_ALL_CC_CHOICES="GCC"
  637. #
  638. # Additional supported languages:
  639. #
  640. CT_CC_LANG_CXX=y
  641. # CT_CC_LANG_FORTRAN is not set
  642. # end of C compiler
  643. #
  644. # Linkers
  645. #
  646. #
  647. # BFD enabled in binutils
  648. #
  649. #
  650. # GOLD enabled in binutils
  651. #
  652. # CT_LINKER_MOLD is not set
  653. CT_ALL_LINKER_CHOICES="MOLD"
  654. # end of Linkers
  655. #
  656. # Debug facilities
  657. #
  658. # CT_DEBUG_DUMA is not set
  659. CT_DEBUG_GDB=y
  660. CT_DEBUG_GDB_PKG_KSYM="GDB"
  661. CT_GDB_DIR_NAME="gdb"
  662. CT_GDB_PKG_NAME="gdb"
  663. CT_GDB_SRC_RELEASE=y
  664. # CT_GDB_SRC_DEVEL is not set
  665. CT_GDB_PATCH_ORDER="global"
  666. CT_GDB_V_16=y
  667. # CT_GDB_V_15 is not set
  668. # CT_GDB_V_14 is not set
  669. # CT_GDB_V_13 is not set
  670. # CT_GDB_V_12 is not set
  671. # CT_GDB_V_11 is not set
  672. # CT_GDB_V_10 is not set
  673. # CT_GDB_V_9 is not set
  674. # CT_GDB_V_8_3 is not set
  675. CT_GDB_VERSION="16.2"
  676. CT_GDB_MIRRORS="$(CT_Mirrors GNU gdb) $(CT_Mirrors sourceware gdb/releases)"
  677. CT_GDB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  678. CT_GDB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  679. CT_GDB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
  680. CT_GDB_SIGNATURE_FORMAT=""
  681. CT_GDB_later_than_16=y
  682. CT_GDB_16_or_later=y
  683. CT_GDB_later_than_15=y
  684. CT_GDB_15_or_later=y
  685. CT_GDB_later_than_14=y
  686. CT_GDB_14_or_later=y
  687. CT_GDB_later_than_13=y
  688. CT_GDB_13_or_later=y
  689. CT_GDB_later_than_12=y
  690. CT_GDB_12_or_later=y
  691. CT_GDB_later_than_11=y
  692. CT_GDB_11_or_later=y
  693. CT_GDB_later_than_10=y
  694. CT_GDB_10_or_later=y
  695. CT_GDB_later_than_8_3=y
  696. CT_GDB_8_3_or_later=y
  697. CT_GDB_CROSS=y
  698. CT_GDB_CROSS_STATIC=y
  699. # CT_GDB_CROSS_SIM is not set
  700. CT_GDB_CROSS_EXTRA_CONFIG_ARRAY=""
  701. # CT_GDB_NATIVE is not set
  702. CT_GDB_GDBSERVER=y
  703. # CT_GDB_NATIVE_BUILD_IPA_LIB is not set
  704. # CT_GDB_NATIVE_STATIC_LIBSTDCXX is not set
  705. CT_GDB_GDBSERVER_TOPLEVEL=y
  706. CT_GDB_CC_LD_LIBTOOL=y
  707. # CT_DEBUG_LTRACE is not set
  708. CT_DEBUG_STRACE=y
  709. CT_DEBUG_STRACE_PKG_KSYM="STRACE"
  710. CT_STRACE_DIR_NAME="strace"
  711. CT_STRACE_PKG_NAME="strace"
  712. CT_STRACE_SRC_RELEASE=y
  713. # CT_STRACE_SRC_DEVEL is not set
  714. CT_STRACE_PATCH_ORDER="global"
  715. CT_STRACE_V_6_13=y
  716. CT_STRACE_VERSION="6.13"
  717. CT_STRACE_MIRRORS="https://strace.io/files/${CT_STRACE_VERSION} https://github.com/strace/strace/releases/download/v${CT_STRACE_VERSION}"
  718. CT_STRACE_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  719. CT_STRACE_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  720. CT_STRACE_ARCHIVE_FORMATS=".tar.xz"
  721. CT_STRACE_SIGNATURE_FORMAT=""
  722. CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE"
  723. # end of Debug facilities
  724. #
  725. # Companion libraries
  726. #
  727. # CT_COMPLIBS_CHECK is not set
  728. # CT_COMP_LIBS_CLOOG is not set
  729. CT_COMP_LIBS_EXPAT=y
  730. CT_COMP_LIBS_EXPAT_PKG_KSYM="EXPAT"
  731. CT_EXPAT_DIR_NAME="expat"
  732. CT_EXPAT_PKG_NAME="expat"
  733. CT_EXPAT_SRC_RELEASE=y
  734. # CT_EXPAT_SRC_DEVEL is not set
  735. CT_EXPAT_PATCH_ORDER="global"
  736. CT_EXPAT_V_2_5=y
  737. CT_EXPAT_VERSION="2.5.0"
  738. CT_EXPAT_MIRRORS="http://downloads.sourceforge.net/project/expat/expat/${CT_EXPAT_VERSION} https://github.com/libexpat/libexpat/releases/download/R_${CT_EXPAT_VERSION//./_}"
  739. CT_EXPAT_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  740. CT_EXPAT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  741. CT_EXPAT_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2 .tar.gz"
  742. CT_EXPAT_SIGNATURE_FORMAT=""
  743. CT_COMP_LIBS_GETTEXT=y
  744. CT_COMP_LIBS_GETTEXT_PKG_KSYM="GETTEXT"
  745. CT_GETTEXT_DIR_NAME="gettext"
  746. CT_GETTEXT_PKG_NAME="gettext"
  747. CT_GETTEXT_SRC_RELEASE=y
  748. # CT_GETTEXT_SRC_DEVEL is not set
  749. CT_GETTEXT_PATCH_ORDER="global"
  750. CT_GETTEXT_V_0_23_1=y
  751. # CT_GETTEXT_V_0_22_5 is not set
  752. # CT_GETTEXT_V_0_21 is not set
  753. # CT_GETTEXT_V_0_20_1 is not set
  754. # CT_GETTEXT_V_0_19_8_1 is not set
  755. CT_GETTEXT_VERSION="0.23.1"
  756. CT_GETTEXT_MIRRORS="$(CT_Mirrors GNU gettext)"
  757. CT_GETTEXT_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  758. CT_GETTEXT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  759. CT_GETTEXT_ARCHIVE_FORMATS=".tar.xz .tar.gz"
  760. CT_GETTEXT_SIGNATURE_FORMAT="packed/.sig"
  761. CT_GETTEXT_later_than_0_23=y
  762. CT_GETTEXT_0_23_or_later=y
  763. CT_GETTEXT_later_than_0_21=y
  764. CT_GETTEXT_0_21_or_later=y
  765. CT_GETTEXT_INCOMPATIBLE_WITH_UCLIBC_NG=y
  766. #
  767. # This version of gettext is not compatible with uClibc-NG. Select
  768. #
  769. #
  770. # a different version if uClibc-NG is used on the target or (in a
  771. #
  772. #
  773. # Canadian cross build) on the host.
  774. #
  775. CT_COMP_LIBS_GMP=y
  776. CT_COMP_LIBS_GMP_PKG_KSYM="GMP"
  777. CT_GMP_DIR_NAME="gmp"
  778. CT_GMP_PKG_NAME="gmp"
  779. CT_GMP_SRC_RELEASE=y
  780. # CT_GMP_SRC_DEVEL is not set
  781. CT_GMP_PATCH_ORDER="global"
  782. CT_GMP_V_6_3=y
  783. # CT_GMP_V_6_2 is not set
  784. # CT_GMP_V_6_1 is not set
  785. CT_GMP_VERSION="6.3.0"
  786. CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)"
  787. CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  788. CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  789. CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2"
  790. CT_GMP_SIGNATURE_FORMAT="packed/.sig"
  791. CT_COMP_LIBS_ISL=y
  792. CT_COMP_LIBS_ISL_PKG_KSYM="ISL"
  793. CT_ISL_DIR_NAME="isl"
  794. CT_ISL_PKG_NAME="isl"
  795. CT_ISL_SRC_RELEASE=y
  796. # CT_ISL_SRC_DEVEL is not set
  797. CT_ISL_PATCH_ORDER="global"
  798. CT_ISL_V_0_26=y
  799. # CT_ISL_V_0_25 is not set
  800. # CT_ISL_V_0_24 is not set
  801. # CT_ISL_V_0_23 is not set
  802. # CT_ISL_V_0_22 is not set
  803. # CT_ISL_V_0_21 is not set
  804. # CT_ISL_V_0_20 is not set
  805. # CT_ISL_V_0_19 is not set
  806. # CT_ISL_V_0_18 is not set
  807. # CT_ISL_V_0_17 is not set
  808. # CT_ISL_V_0_16 is not set
  809. # CT_ISL_V_0_15 is not set
  810. CT_ISL_VERSION="0.26"
  811. CT_ISL_MIRRORS="https://libisl.sourceforge.io"
  812. CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  813. CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  814. CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz"
  815. CT_ISL_SIGNATURE_FORMAT=""
  816. CT_ISL_later_than_0_18=y
  817. CT_ISL_0_18_or_later=y
  818. CT_ISL_later_than_0_15=y
  819. CT_ISL_0_15_or_later=y
  820. CT_COMP_LIBS_LIBELF=y
  821. CT_COMP_LIBS_LIBELF_PKG_KSYM="LIBELF"
  822. CT_LIBELF_DIR_NAME="libelf"
  823. CT_LIBELF_PKG_NAME="libelf"
  824. CT_LIBELF_SRC_RELEASE=y
  825. # CT_LIBELF_SRC_DEVEL is not set
  826. CT_LIBELF_PATCH_ORDER="global"
  827. CT_LIBELF_V_0_8=y
  828. CT_LIBELF_VERSION="0.8.13"
  829. CT_LIBELF_MIRRORS="https://fossies.org/linux/misc/old http://oe-lite.org/mirror/libelf/ http://ftp.osuosl.org/pub/blfs/conglomeration/libelf/"
  830. CT_LIBELF_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  831. CT_LIBELF_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  832. CT_LIBELF_ARCHIVE_FORMATS=".tar.gz"
  833. CT_LIBELF_SIGNATURE_FORMAT=""
  834. CT_COMP_LIBS_LIBICONV=y
  835. CT_COMP_LIBS_LIBICONV_PKG_KSYM="LIBICONV"
  836. CT_LIBICONV_DIR_NAME="libiconv"
  837. CT_LIBICONV_PKG_NAME="libiconv"
  838. CT_LIBICONV_SRC_RELEASE=y
  839. # CT_LIBICONV_SRC_DEVEL is not set
  840. CT_LIBICONV_PATCH_ORDER="global"
  841. CT_LIBICONV_V_1_16=y
  842. # CT_LIBICONV_V_1_15 is not set
  843. CT_LIBICONV_VERSION="1.16"
  844. CT_LIBICONV_MIRRORS="$(CT_Mirrors GNU libiconv)"
  845. CT_LIBICONV_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  846. CT_LIBICONV_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  847. CT_LIBICONV_ARCHIVE_FORMATS=".tar.gz"
  848. CT_LIBICONV_SIGNATURE_FORMAT="packed/.sig"
  849. CT_COMP_LIBS_MPC=y
  850. CT_COMP_LIBS_MPC_PKG_KSYM="MPC"
  851. CT_MPC_DIR_NAME="mpc"
  852. CT_MPC_PKG_NAME="mpc"
  853. CT_MPC_SRC_RELEASE=y
  854. # CT_MPC_SRC_DEVEL is not set
  855. CT_MPC_PATCH_ORDER="global"
  856. CT_MPC_V_1_3=y
  857. CT_MPC_VERSION="1.3.1"
  858. CT_MPC_MIRRORS="https://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)"
  859. CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  860. CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  861. CT_MPC_ARCHIVE_FORMATS=".tar.gz"
  862. CT_MPC_SIGNATURE_FORMAT="packed/.sig"
  863. CT_MPC_later_than_1_1_0=y
  864. CT_MPC_1_1_0_or_later=y
  865. CT_COMP_LIBS_MPFR=y
  866. CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR"
  867. CT_MPFR_DIR_NAME="mpfr"
  868. CT_MPFR_PKG_NAME="mpfr"
  869. CT_MPFR_SRC_RELEASE=y
  870. # CT_MPFR_SRC_DEVEL is not set
  871. CT_MPFR_PATCH_ORDER="global"
  872. CT_MPFR_V_4_2=y
  873. CT_MPFR_VERSION="4.2.1"
  874. CT_MPFR_MIRRORS="https://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)"
  875. CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  876. CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  877. CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip"
  878. CT_MPFR_SIGNATURE_FORMAT="packed/.asc"
  879. CT_MPFR_later_than_4_0_0=y
  880. CT_MPFR_4_0_0_or_later=y
  881. CT_COMP_LIBS_NCURSES=y
  882. CT_COMP_LIBS_NCURSES_PKG_KSYM="NCURSES"
  883. CT_NCURSES_DIR_NAME="ncurses"
  884. CT_NCURSES_PKG_NAME="ncurses"
  885. CT_NCURSES_SRC_RELEASE=y
  886. # CT_NCURSES_SRC_DEVEL is not set
  887. CT_NCURSES_PATCH_ORDER="global"
  888. CT_NCURSES_V_6_4=y
  889. # CT_NCURSES_V_6_2 is not set
  890. # CT_NCURSES_V_6_1 is not set
  891. # CT_NCURSES_V_6_0 is not set
  892. CT_NCURSES_VERSION="6.4"
  893. CT_NCURSES_MIRRORS="https://invisible-mirror.net/archives/ncurses $(CT_Mirrors GNU ncurses)"
  894. CT_NCURSES_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  895. CT_NCURSES_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  896. CT_NCURSES_ARCHIVE_FORMATS=".tar.gz"
  897. CT_NCURSES_SIGNATURE_FORMAT="packed/.sig"
  898. CT_NCURSES_NEW_ABI=y
  899. CT_NCURSES_HOST_CONFIG_ARGS=""
  900. CT_NCURSES_HOST_DISABLE_DB=y
  901. CT_NCURSES_HOST_FALLBACKS="linux,xterm,xterm-color,xterm-256color,vt100"
  902. CT_NCURSES_TARGET_CONFIG_ARGS=""
  903. # CT_NCURSES_TARGET_DISABLE_DB is not set
  904. CT_NCURSES_TARGET_FALLBACKS=""
  905. CT_COMP_LIBS_ZLIB=y
  906. CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB"
  907. CT_ZLIB_DIR_NAME="zlib"
  908. CT_ZLIB_PKG_NAME="zlib"
  909. CT_ZLIB_SRC_RELEASE=y
  910. # CT_ZLIB_SRC_DEVEL is not set
  911. CT_ZLIB_PATCH_ORDER="global"
  912. CT_ZLIB_V_1_3_1=y
  913. # CT_ZLIB_V_1_2_13 is not set
  914. CT_ZLIB_VERSION="1.3.1"
  915. CT_ZLIB_MIRRORS="https://github.com/madler/zlib/releases/download/v${CT_ZLIB_VERSION} https://www.zlib.net/"
  916. CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  917. CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  918. CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz"
  919. CT_ZLIB_SIGNATURE_FORMAT="packed/.asc"
  920. CT_COMP_LIBS_ZSTD=y
  921. CT_COMP_LIBS_ZSTD_PKG_KSYM="ZSTD"
  922. CT_ZSTD_DIR_NAME="zstd"
  923. CT_ZSTD_PKG_NAME="zstd"
  924. CT_ZSTD_SRC_RELEASE=y
  925. # CT_ZSTD_SRC_DEVEL is not set
  926. CT_ZSTD_PATCH_ORDER="global"
  927. CT_ZSTD_V_1_5_6=y
  928. # CT_ZSTD_V_1_5_5 is not set
  929. # CT_ZSTD_V_1_5_2 is not set
  930. CT_ZSTD_VERSION="1.5.6"
  931. CT_ZSTD_MIRRORS="https://github.com/facebook/zstd/releases/download/v${CT_ZSTD_VERSION} https://www.zstd.net/"
  932. CT_ZSTD_ARCHIVE_FILENAME="@{pkg_name}-@{version}"
  933. CT_ZSTD_ARCHIVE_DIRNAME="@{pkg_name}-@{version}"
  934. CT_ZSTD_ARCHIVE_FORMATS=".tar.gz"
  935. CT_ZSTD_SIGNATURE_FORMAT="packed/.sig"
  936. CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP GNUPRUMCU ISL LIBELF LIBICONV MPC MPFR NCURSES NEWLIB_NANO PICOLIBC ZLIB ZSTD"
  937. CT_LIBICONV_NEEDED=y
  938. CT_GETTEXT_NEEDED=y
  939. CT_GMP_NEEDED=y
  940. CT_MPFR_NEEDED=y
  941. CT_ISL_NEEDED=y
  942. CT_MPC_NEEDED=y
  943. CT_EXPAT_NEEDED=y
  944. CT_NCURSES_NEEDED=y
  945. CT_ZLIB_NEEDED=y
  946. CT_ZSTD_NEEDED=y
  947. CT_LIBICONV=y
  948. CT_GETTEXT=y
  949. CT_GMP=y
  950. CT_MPFR=y
  951. CT_ISL=y
  952. CT_MPC=y
  953. CT_EXPAT=y
  954. CT_NCURSES=y
  955. CT_ZLIB=y
  956. CT_ZSTD=y
  957. # end of Companion libraries
  958. #
  959. # Companion tools
  960. #
  961. # CT_COMP_TOOLS_FOR_HOST is not set
  962. # CT_COMP_TOOLS_AUTOCONF is not set
  963. # CT_COMP_TOOLS_AUTOMAKE is not set
  964. # CT_COMP_TOOLS_BISON is not set
  965. # CT_COMP_TOOLS_DTC is not set
  966. # CT_COMP_TOOLS_LIBTOOL is not set
  967. # CT_COMP_TOOLS_M4 is not set
  968. # CT_COMP_TOOLS_MAKE is not set
  969. CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE"
  970. # end of Companion tools
复制代码







   Once Day

  

    也信尤物终作土,不堪幽梦太急遽......
    如果这篇文章为您带来了帮助或启发,不妨点个赞

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王海鱼

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表