rust
sur PII
Cette page fait suite à
Du début jusqu'à tmux
.
Les portables que j'utilise sont le IBM ThinkPad 560Z Pentium II d'octobre
1998 et le IBM ThinkPad 600X Pentium III produit en avril 2000. J'utilise
Core Linux 14 uniquement en terminal.
Il n'est pas possible d'utiliser le script d'installation officiel de
rust
ni de simplement installer l'extension officielle de
Tiny Core Linux rust.tcz
. Dans les deux cas, j'ai obtenus
plusieurs erreurs. Voir
les erreurs de rust.tcz
sur un Pentium II
La solution est de générer un compilateur rust
qui ne contient
pas les opérations invalides.
Un grand merci à Adam qui a créé ce site avec les instructions à suivre sur Gentoo Linux Building Rust for a Pentium 2 . Je me suis basé sur ses explications pour compiler mon propre compilateur sur Debian.
Il est possible que les instructions suivantes soient incomplètes. Mon Debian avait déjà plusieurs outils de développement. S'il vous manque des paquets ou des dépendances, il y aura fort probablement des erreurs au terminal. Cherchez internet et vous trouverez sûrement la solution :)
Ma configuration est un Debian 11 x64, avec un FX9590, un SSD de 2TB Samsung QVO, 32 Go de RAM. Plusieurs configurations fonctionneront. Il m'a fallu environ 1 heure 45 minutes pour générer le compilateur.
Il faut installer au moins ces paquets:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential cmake gcc gcc-multilib g++ g++-multilib git lib32z1 zlib1g-dev zlib1g-dev:i386 libssl-dev libssl-dev:i386 openssl curl ninja-build python3
À noter, j'ai installé des dépendances deux fois. Par exemple,
zlib1g-dev zlib1g-dev:i386
. La première est la version x64,
la seconde est la version i386. Quand j'avais seulement la version x64,
la génération du compilateur rust
échouait parce qu'elle
searchait pour la version x86 qui était manquante. Le PII est un x86.
Il faut obtenir le code de rust
avec
La version
git clone https://github.com/rust-lang/rust
cd rust
git checkout stable
git submodule update --init --recursive
stable
quand j'ai exécuté ces commandes était
1.71.1.
Il faut configurer les variables d'environnement suivantes:
export CFLAGS="-march=pentium"
export CXXFLAGS="-march=pentium"
export RUST_BACKTRACE=full
Il faut éditer le fichier config.toml
et démarrer la
génération du compilateur.
La commande
./configure --set build.extended=true --set build.build=i686-unknown-linux-gnu --set build.host=i586-unknown-linux-gnu --set build.target=i586-unknown-linux-gnu --set llvm.cflags="-lz -fcf-protection=none" --set llvm.cxxflags="-lz -fcf-protection=none" --set llvm.ldflags="-lz -fcf-protection=none" --set llvm.targets=X86 --set llvm.download-ci-llvm=false
./x.py check
PKG_CONFIG_ALLOW_CROSS=1 ./x.py dist -j 8 2>&1 | tee date-time-rust-i586-build-log.txt
./x.py check
est optionnelle, mais elle
peut fournir des informations à propos de dépendances possibles
avant de démarrer la compilation ce qui peut sauver du temps.
J'utilise -j 8
pour utiliser to mes 8 coeurs
processeur. C'est possible de mettre moins de coeur pour continuer
à utiliser l'ordinateur pendant la compilation.
Pour une raison inconnue, ma première compilation à échoué parce
que build.host=i586-unknown-linux-gnu
et
build.target=i586-unknown-linux-gnu
n'étaient pas du type
sequence
dans le fichier config.toml
. J'ai
édité le fichier en utilisant vim config.toml
et j'ai ajouté
[ ]
alentour des valeurs pour obtenir
On peut probablement passer
host = ['i586-unknown-linux-gnu']
target = ['i586-unknown-linux-gnu']
--set build.host=['i586-unknown-linux-gnu']
et
--set build.target=['i586-unknown-linux-gnu']
à la commande
./configure
pour que des séquences soient ajoutées à
config.toml
, mais je ne l'ai pas testé alors ce n'est peut-
être pas la bonne syntaxe.
La compilation se complètera et on trouvera plusieurs fichiers
.tar.gz
dans le répertoire rust/build/dist/
.
On veut l'archive
rust-1.71.1-dev-i586-unknown-linux-gnu.tar.gz
On peut l'extraire avec tar -xvf
pour valider que
cargo
et rustc
sont là avec plusieurs autres
fichiers. Ce sont tous les modules requis pour pouvoir compiler du
rust
.
rust-1.71.1-dev-i586-unknown-linux-gnu.tar.gz
sur le 560Z
On peut utiliser FTP pour télécharger le fichier sur le 560Z.
La dernière commande
ftpget -v -u utilisateur_a_remplacer -p mot_de_passe_a_remplacer replace_with_your_IP-192.168.0.155 rust-1.71.1-dev-i586-unknown-linux-gnu.tar.gz
md5sum rust-1.71.1-dev-i586-unknown-linux-gnu.tar.gz
tar -xf rust-1.71.1-dev-i586-unknown-linux-gnu.tar.gz
mkdir rust-1.71.1-i586
mkdir rust-1.71.1-i586/etc
cd rust-1.71.1-dev-i586-unknown-linux-gnu
sudo sh ./install.sh --verbose --destdir=/home/tc/rust-1.71.1-i586 --sysconfdir=/home/tc/rust-1.71.1-i586/etc
export PATH=/home/tc/rust-1.71.1-i586/usr/local/bin:$PATH
export PATH=/home/tc/rust-1.71.1-i586/usr/local/bin:$PATH
est à refaire à chaque redémarrage. Vu qu'on ne peut pas générer un
rust-1.71.1-pii.tcz
pour ensuite le charger automatiquement
en mémoire vive au démarrage avec /mnt/sda2/tce/onboot.lst
il faut utiliser les fichiers qui sont directement sur le disque. Si le
portable avait plus de mémoire, on pourrait générer un .tcz
et le charger en mémoire vive
comme il est possible de le faire avec le ThinkPad 600x ici.
cargo
Maintenant, il devrait être possible d'exécuter
rustc --version
cargo --version
cargo new hello-world
cd hello-world
cargo run
S'il y a une erreur indiquant que cc
est manquant, on peut
installer ceci :
tce-load -wi gcc.tcz
tce-load -wi glibc_base-dev.tcz
rust
a besoin d'un linker C pour pouvoir fonctionner.
J'ai compris en lisant
piCore 9.x ARMv6 g++ compilation error
et
How do I fix the Rust error "linker 'cc' not found" for Debian on Windows 10?
Merci à
gcc.tcz
(
gcc.tcz.info
)
et pour glibc_base-dev.tcz
(
glibc_base-dev.tcz.info
Dernière mise à jour 2023-11-06.