1 votes

L'équivalent MacOS de la commande Ubuntu Linker (ld) ?

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

1voto

Jose Chavez Points 645

Linker scripts peut être utilisé avec la version GNU de ld pour personnaliser la façon dont vous voulez que votre programme soit lié. Essentiellement, toutes les personnalisations ne peuvent pas être faites avec des arguments de ligne de commande, et à la place vous les spécifiez dans un script de linker.

Le site ld Sous MacOS, en revanche, la commande permet de spécifier toutes les personnalisations possibles par le biais des arguments de la ligne de commande. Par conséquent, les scripts de linker ne sont pas utilisés et ne sont pas supportés.

Si vous voulez vraiment trouver une option "équivalente" à l'option -T il serait @ . Vous pouvez aller ld @file [...] et le contenu du fichier nommé file sera ajouté aux arguments de la ligne de commande. Il ne vous donne pas d'autres possibilités de personnalisation que celles déjà disponibles en tant qu'arguments de ligne de commande.

Notez que le linker scripts fait pour la version GNU de ld ne peut pas être utilisé avec la version standard de MacOS fournie par l'entreprise. ld .

0 votes

Je ne sais toujours pas exactement ce que je dois faire. ld @linker.ld -melf_i386 loader.o -o kernel.elf retours ld: file not found: ENTRY(loader)

1 votes

Comme je l'ai écrit dans la réponse, vous ne pouvez pas utiliser votre linker script avec cette licence. N'essayez pas. Posez plutôt une nouvelle question et expliquez ce que vous voulez réaliser avec votre linker script, et vous pourrez être aidé sur la façon de le mettre en œuvre avec cette ld.

0 votes

Cela ne fonctionnera pas, surtout si vous essayez de faire des choses au niveau du noyau. Non seulement les outils de MacOS sont différents (les options pour ld) mais le noyau est totalement différent. Vous vous engagez dans des voies de garage profondes - qu'est-ce que vous essayez de faire pour utiliser ce tutoriel ?

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X