[LINUX] Début de l'auto-construction OS 1. Construction de l'environnement

Oui, faisons un OS!

Alors, j'aimerais faire un OS. Cette fois, arrivons au point d'obtenir un compilateur croisé GCC.

Quoi préparer

1. Installation des dépendances

Tout d'abord, installez les dépendances.

Ce dont vous avez besoin est:

Vous pouvez utiliser curl comme vous le souhaitez, comme wget.

$ sudo apt update
$ sudo apt -y install curl build-essential m4 libgmp3-dev libmpc-dev libmpfr-dev qemu qemu-kvm

2. Construisez gmp, mpfr, mpc, binutils

Commencez par créer gmp. Il est défini sur --prefix = / usr / local / cc, mais vous pouvez l'utiliser comme vous le souhaitez. Cependant, je pense qu'il est préférable de rendre la valeur spécifiée par ce --prefix commune à gmp, mpfr, mpc et binutils.

D'abord de gmp.

gmp


$ curl --output gmp-6.2.0.tar.bz2 https://ftp.gnu.org/gnu/gmp/gmp-6.2.0.tar.bz2
$ tar -xvf gmp-6.2.0.tar.bz2
$ cd gmp-6.2.0
$ ./configure --prefix=/usr/local/cc
$ make check && sudo make install
$ cd ..

Ensuite, faites dans l'ordre mpfr, mpc, binutils.

mpfr


$ curl --output mpfr-4.1.0.tar.bz2 https://ftp.gnu.org/gnu/mpfr/mpfr-4.1.0.tar.bz2
$ tar -xvf mpfr-4.1.0.tar.bz2
$ cd mpfr-4.1.0
$ ./configure --prefix=/usr/local/cc
$ make check && sudo make install
$ cd ..

mpc


$ curl --output mpc-1.2.0.tar.gz https://ftp.gnu.org/gnu/mpc/mpc-1.2.0.tar.gz
$ tar -xvf mpc-1.2.0.tar.gz
$ cd mpc-1.2.0
$ ./configure --prefix=/usr/local/cc
$ make check && sudo make install
$ cd ..

binutils


$ curl --output binutils-2.35.tar.xz https://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.xz
$ tar -xvf binutils-2.35.tar.xz
$ cd binutils-2.35
$ ./configure --target=x86_64-elf --prefix=/usr/local/cc --disable-nls
$ make
$ make install
$ cd ..

3. Construisez gcc

Eh bien, enfin GCC faire. Voici quelques mises en garde. La première est que vous devez aller dans le répertoire du code source gcc et ne pas faire ** . / Configure **. Si vous faites cela, vous pouvez utiliser make all-target-libgcc. Le second est l'argument de configuration --with-xxx. Pour cela, spécifiez le répertoire spécifié par --prefix de gmp, mpfr, mpc à l'étape précédente, respectivement. Le troisième est l'argument «--with-as». Ceci, contrairement à d'autres, vous oblige à spécifier directement le ** chemin binaire d'exécution **.

gcc faire


$ curl --output gcc-10.2.0.tar.xz https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz
$ tar -xvf gcc-10.2.0.tar.xz
$ mkdir gcc-make-tmp
$ cd gcc-make-tmp
$ ../gcc-10.2.0/configure\
    --target=x86_64-elf\
    --prefix=/usr/local/cc\
    --disable-nls\
    --enable-languages=c\
    --without-headers\
    --with-gmp=/usr/local/cc\
    --with-mpfr=/usr/local/cc\
    --with-mpc=/usr/local/cc\
    --with-as=/usr/local/cc/bin/x86_64-elf-as #Spécifiez le chemin binaire de la commande as
    #Vous pourriez tomber malade sans ça(stdio.h: no such file or directory.)
    #Ajoutez si vous le pouvez
    # --with-headers=/usr/include\
    # --with-headers=/usr/include/x86_64-linux-gnu
$ #Cela prend beaucoup de temps, alors prenons une pause thé tout en exécutant cette commande.
$ make all-gcc && make install-gcc
$ make all-target-libgcc && make install-target-libgcc

4. Test

$ export PATH=/usr/local/cc/bin:$PATH
$ x86_64-elf-gcc -v
Using built-in specs.
COLLECT_GCC=x86_64-elf-gcc
COLLECT_LTO_WRAPPER=/mnt/d/usr/local/cc/libexec/gcc/x86_64-elf/10.2.0/lto-wrapper
Target: x86_64-elf
Configured with: (réduction)
Thread model: single
Supported LTO compression algorithms: zlib
gcc version 10.2.0 (GCC)

Si une telle sortie est effectuée, elle réussit. Je vous remercie pour votre travail acharné.

5. Impressions

J'ai eu du mal car il y avait peu d'informations. Surtout, la dernière marque gcc a été difficile.

** Construisez des binutils à partir des sources. ** **

Recommended Posts

Début de l'auto-construction OS 1. Construction de l'environnement
[Memo] Construction de l'environnement cygwin
Construction de l'environnement de python2 & 3 (OSX)
[Django] Mémorandum de procédure de construction d'environnement
Construire un environnement pour python3.8 sur Mac
Créer un environnement pour "Tello_Video" sur Ubuntu
Construction de l'environnement de développement Mac OS X Mavericks 10.9.5
Construction de l'environnement GeoDjango + SQLite sur OS X
Construction de l'environnement de développement Mac OS X Yosemite 10.10
Mémo de construction de l'environnement de développement Mac OS X
Construction d'un environnement de développement pour l'atelier Choreonoid
Construction de l'environnement DeepIE3D
Construction d'environnement basée sur Emacs
Construction de l'environnement Linux
Construction d'environnement (python)
construction d'environnement django
Construction de l'environnement CodeIgniter
construction d'environnement python
Python - Construction de l'environnement
Construction de l'environnement Python
Construction de l'environnement Golang
Construction de l'environnement de word2vec
Installation de Python 3 et Flask [Résumé de la construction de l'environnement]
Construction d'environnement Poetry-virtualenv avec python de centos-sclo-rh ~ Notes
Construction de l'environnement de développement Mac OS X Mountain Lion 10.8.5
Construction de l'environnement: GCP + Docker
Construction de l'environnement du projet Django
Unification de l'environnement Python
Mémo de construction de l'environnement ConoHa
construction d'environnement python homebrew
Construction d'environnements liés à PyData
Construction de l'environnement Anaconda-4.2.0-python3 (Mac)
Construction de l'environnement de développement Python
Construction de l'environnement YOLO v4 ①
construction de l'environnement pyenv + fish
Construction de l'environnement de développement python2.7
Mémo de construction de l'environnement BigGorilla
Mémorandum de construction de l'environnement de la bibliothèque AutoML PyCaret
construction de l'environnement de préhension onCentOS6.5
Mémo de construction de l'environnement Anaconda
Construction de l'environnement Golang [goenv]
Construction de l'environnement Pyxel (Mac)
Construction de l'environnement Python @ Win7
Création d'un environnement de développement local Python, partie 2 (pyenv-virtualenv, utilisation de pip)
Grattez automatiquement le site reCAPTCHA tous les jours (1/7: construction de l'environnement python)
Remarques sur la création d'un environnement Linux à l'aide de VirtualBox + Vagrant sous Windows 10
Construction d'un environnement de développement Cortex-M pour TOPPERS utilisant Raspeye
[Ubuntu 18.04] Construction de l'environnement Tensorflow 2.0.0-GPU
Construction de l'environnement Python + Anaconda + Pycharm
À propos de la construction de l'environnement Linux (CentOS)
Python - Démarrage rapide de la journalisation
Construction de l'environnement PyTorch C ++ (LibTorch)
Construction de l'environnement Anaconda sur CentOS7
Mémo de construction de l'environnement de développement Django