Je suis des tutoriels de 2015, et dedans on lance cette commande Linker :
ld -T linker.ld -melf_i386 loader.o -o kernel.elf
Je reçois cette erreur :
ld: unknown option: -T
J'ai essayé de le remplacer par ld --script=linker.ld -melf_i386 loader.o -o kernel.elf
mais cette erreur : ld: unknown option: --script=linker.ld
Après avoir parcouru man ld
il semble que ni l'un ni l'autre ne soit une option. Ce tutoriel a été conçu pour Ubuntu, quel serait l'équivalent pour MacOS ?
Si cela a de l'importance, je suis sur une machine Intel Big Sur.
0 votes
Si vous utilisez Homebrew, je crois que coreutils inclut une version gnu de ld.
brew install coreutils
0 votes
Je vais essayer.
1 votes
Dans /usr/opt/coreutils/bin/ (mon emplacement d'installation), il n'y a pas de programme 'gld' ou 'ld'. Qu'est-ce que cela pourrait être d'autre @MatthewBarclay
0 votes
Que fait -T ? Peut-être que l'option n'est pas disponible dans ld sur MacOS.
0 votes
C'est pour le script. Équivalent à --script=script. Je sors de cette liste : sourceware.org/binutils/docs/ld/Options.html
0 votes
Pourquoi avez-vous posé la question ? Le lien que vous fournissez dans votre commentaire ci-dessus répond à votre question.
0 votes
@DavidAnderson Non, ce n'est pas le cas. La version MacOS de
ld
ne fonctionne pas dans ce cas, et je ne connais pas de solution de remplacement viable.0 votes
Mais votre lien vous indique d'utiliser
gcc
au lieu deld
. J'ai testé et cela semble fonctionner, bien que je ne pense pas que la-melf_i386
existe. L'utilisateur nohillside demande ce que-T
fait etgcc
a le-T
option. Voir aussigcc --help
.0 votes
Remarque générale MacOS a tendance à utiliser Xcode et clang comme outils C et non gcc - un tutoriel basé sur GNU/Linux n'est donc souvent pas la meilleure façon de commencer. gcc n'est nécessaire que dans des cas particuliers.
0 votes
En fait,
/usr/bin/gcc
y/usr/bin/clang
sont des fichiers différents, maiscmp /usr/bin/gcc /usr/bin/clang
renvoie que les fichiers ont un contenu identique.man gcc
ne renvoie rien, maisman clang
fait. Toutefois, le-T
L'option n'apparaît pas dans lesman clang
mais il existe et apparaît également dansclang -help
. Je dois préciser que je n'ai installé que les outils de développement en ligne de commande dans MacOS 11.2. Je n'ai pas installé Xcode.1 votes
@DavidAnderson
-melf_i386
est-m
avec l'optionelf_i386
.