[Help] Compilation cross plateform (RaspberryPi / Ubuntu)

Compilation cross plateform (RaspberryPi / Ubuntu) [Help] - C - Programmation

Marsh Posté le 01-04-2017 à 10:34:43    

:hello:
 
Voila je viens vers vous car je travaille sur un projet perso mais je suis bloqué sur un problème de compilation. Principalement du fait que j'essaye de compiler du code C sur Ubuntu alors qu'il est normalement à compilé sur un Raspberry Pi...
 
Le projet principal est celui ci : https://github.com/joachimvenaas/gbzbatterymonitor
 
Et dans le guide d'installation il est indiqué "Install Raspidmx (pngview) and compile it by using make", qui est le projet suivant : https://github.com/AndrewFromMelbou [...] er/pngview
 
Pour les raisons de mon projet, l'installation doit se dérouler de la façon suivante :
 
1) Installation d'une distribution (Recalbox dans mon cas) sur le Pi
2) Installation fraîche d'Ubuntu (sur une VM pour ma part)
3) Branchement de la carte SD sur le PC
4) Mise en place des projets github ci dessus
5) Remise de la carte SD dans le pi
6) ...
7) Profit !
 
Je bloque sur l'étape 4, car je n'arrive pas à compiler "pngview.c" :o J'ai essayé pas mal de temps, je n'y connais pas grand chose en C.. Surtout vu que je suis sur Ubuntu et pas sur le Pi, il y a surement des choses à installer/télécharger pour que je puisse réaliser le "make".
 
Voila ce que j'ai essayé de faire jusqu'à présent :
 
- Installer "build-essential"
- Télécharger les deux projets github
- Télécharger Raspberry Pi TOOLS
- Télécharger opt/vc (j'ai vu qu'il était dans les includes du makefile)
- Installer "libpng16-dev" (je ne sais pas si c'est la bonne version mais j'avais une erreur sinon, comme quoi il ne trouvait pas des fichiers)
- Modifier le Makefile de façon à choisir : le compilateur (j'en ai essayé différents du dossier tools..), le chemin vers "opt/vc", préciser l'include pour "libpng16".
 
 
Je me retrouve toujours à finir sur une erreur, je désespère à faire ce que je veux  [:michelnet1]  Sachant que je ne sais pas si toute les étapes sont nécessaires ou s'il en manque.  
 
J'aurais besoin d'aide pour connaitre les étapes exactes des commandes à faire, pour compiler ce projet, en partant d'une version Ubuntu vierge ! Et bien sur des explications sur le pour quoi du comment  :whistle:


---------------
Modding/Watercooling : PiBoy! ~ WaterBox // Achat / Vente !!
Reply

Marsh Posté le 01-04-2017 à 10:34:43   

Reply

Marsh Posté le 06-04-2017 à 19:01:57    

J'ai réussi à faire de la cross-compilation, avec distcc, entre une raspberry pi 3 et un pc, les 2 sous archlinux: https://wiki.archlinux.org/index.php/Distcc
Ne pas oublier d'installer la toolchain ARMv7l hard. Je l'avais installée dans /opt avec les bonnes permissions.

Reply

Marsh Posté le 15-05-2017 à 13:39:47    

Salut,
 
Visiblement, recalbox est basé sur buildroot. À mon avis le plus simple est de
suivre la procédure pour recompiler la distribution:
       https://github.com/recalbox/recalbo [...] tions-(EN)
 
       Cela te permettra d'avoir toute la chaîne de compilation nécessaire à la
création d'application pour ta cible.
 
Puis d'ajouter ton projet perso en tant que paquet dans buildroot.
 
(Bon moi je trouve que c'est le plus simple parce que je connais buildroot).
 
De cette façon tu es sûr d'avoir une application compilée et configurée pour ta
distribution et pour ton matériel.
 
Pour ajouter un paquet dans buildroot. Le manuel complet (compliqué):
https://buildroot.org/downloads/man [...] g-packages
 
Un exemple:
buildroot_dir/package/exemple/Config.in:

Code :
  1. config BR2_PACKAGE_EXEMPLE
  2. bool exemple
  3. help
  4.   un exemple


 
buildroot_dir/package/exemple/exemple.mk:

Code :
  1. EXEMPLE_VERSION = 1.0
  2. EXEMPLE_SITE = $(TOPDIR)/package/exemple/sources
  3. EXEMPLE_SITE_METHOD = local
  4. EXEMPLE_LICENCE = GPLv3+
  5. define EXEMPLE_BUILD_CMDS
  6. CC=$(TARGET_CC) $(MAKE) -C $(@D)
  7. endef
  8. define EXEMPLE_INSTALL_TARGET_CMDS
  9. prefix=$(TARGET_DIR) $(MAKE) -C $(@D) install
  10. endef
  11. $(eval $(generic-package))


 
Et la fin de buildroot_dir/package/Config.in:

Code :
  1. menu "Custom packages"
  2. source "package/exemple/Config.in"
  3. endmenu
  4. endmenu


 
 
Dans cette exemple, le paquet exemple utilise un makefile classique pour
compiler et les sources sont placées dans buildroot_dir/package/exemple/sources.
 
 
       


---------------
deluser --remove-home ptitchep
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed