web-dev-qa-db-fra.com

Comment compiler quelque chose pour Linux si je n'ai pas assez d'espace pour installer GCC?

J'ai acheté une interface homme-machine (Exor Esmart04). Fonctionnant sous Linux 3.10.12, cependant ce Linux est supprimé et n'a pas de compilateur C. Un autre problème est l'espace disque:

disk-space-snip

J'ai essayé d'y installer GCC mais je n'ai pas assez d'espace disque pour cela, est-ce que quelqu'un a d'autres solutions ou d'autres compilateurs C qui nécessitent moins d'espace disque?

23
NielsStenden

Habituellement, pour un appareil intégré, on ne compile pas de logiciel directement dessus. Il est plus confortable de faire ce qu'on appelle cross-compilation qui est, en bref, la compilation en utilisant votre PC normal vers une autre architecture que x86.

Vous avez dit que vous êtes nouveau sur Linux; juste pour votre information, vous êtes confronté à un énorme problème: la compilation croisée vers des appareils intégrés n'est pas une tâche facile.

J'ai fait des recherches sur votre système IHM et j'ai remarqué certains résultats qui parlent de Yocto. Yocto est, en bref, tout un framework pour construire un firmware pour des appareils embarqués.

Étant donné que votre IHM utilise massivement des projets Open Source (Linux, probablement busybox, etc.), le fabricant doit vous fournir un moyen de reconstruire tous les composants open source en toi même. Habituellement, ce que vous devez faire c'est BSP ( Board Support Package ). Le fabricant de matériel l'expédie habituellement:

  • Utilisation du projet buildroot qui vous permet de reconstruire l'intégralité de votre firmware à partir de zéro.
  • L'utilisation de la méta yocto qui, ajoutée à une nouvelle copie du projet yocto correspondant, vous permettra également de reconstruire l'intégralité de votre firmware.
  • Plus rarement, un tas de scripts merdiques et un compilateur pré-construit.

Donc, si j'étais toi, je:

  1. Contactez le support du fabricant pour demander les éléments nécessaires à la reconstruction du micrologiciel, comme l'implique l'utilisation d'Open Source.
  2. En parallèle, recherchez sur Google "votre IHM + yocto", "votre IHM + buildroot", etc.

Après googler encore plus, j'ai découvert une méta sur Yocto github .

Vous pouvez vérifier les machines implémentées par cette méta dans le répertoire conf/machine de la méta.

Il existe actuellement cinq machines définies sous les noms de code suivants:

  • us01-kit
  • kit us02
  • kit us03
  • usom01
  • usom02

Je vous suggère donc de creuser cela. C'est probablement ainsi que vous pouvez créer vous-même un logiciel. Vous pouvez également vérifier cette page sur le compte github qui peut vous donner plus d'indices.

63
binarym

Je suis d'accord avec la réponse de binarym concernant la compilation croisée. Cependant, si l'on voulait toujours compiler directement sur une machine avec un matériel aussi conservateur, je recommanderais de jeter un oeil à un compilateur plus petit tel que le Tiny C Compiler (tcc) qui prend environ 100 Ko sur l'architecture x86 . Je soulignerai cependant qu'il étend la prise en charge uniquement jusqu'à ISO C99, pas C11.

3
Christian Gibbons