Test de compilation sous Bullseye

Vous avez réalisé ou vous voulez réaliser un truc impensable avec votre Raspberry Pi ? Cet endroit est pour vous...

Modérateur : Francois

Répondre
destroyedlolo
Raspinaute
Messages : 1587
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Test de compilation sous Bullseye

Message par destroyedlolo » mer. 10 nov. 2021 12:01

Suite du thread : viewtopic.php?f=7&t=6577

Merci pour ton aide.
dyox a écrit :
mer. 10 nov. 2021 09:40
Je veux bien mais je ne suis pas un pro de la compilation. Déjà compiler à partir d'où ? Pi ou PC ?
Y'a pas besoin d'être expert ;)
La compile se fait sur le PI directement. Ca va installer quelques librairies sur ton PI mais c'est léger.
dyox a écrit :
mer. 10 nov. 2021 09:40
Et je n'ai pas envie de chercher tous les lib donc si tu peux me mâcher le travail :D
Oui bien sur :lol:

Donc, le but est de compiler le framework qui me sert pour le tableau de bord de ma domotique (https://github.com/destroyedlolo/Selene) mais sur Bullseye, j'ai le problème que je décris là : https://forum.armbian.com/topic/19179-l ... ent-130550.
(comme je l'ai indiqué, ce n'est pas un problème de GCC 10 vu que mes Gentoo ont déjà migré vers 10 voir 11 et que ca se passe sans problème).

Il faut donc :
0/ installer les chaines de compilations si ce n'est pas déja fait (gcc, git)

Code : Tout sélectionner

sudo apt install git make build-essential libssl-dev
1/ Installer LFMakeMaker pour reconstruire le makefile

Code : Tout sélectionner

cd /tmp
git clone https://github.com/destroyedlolo/LFMakeMaker
cd LFMakeMaker
gcc -O -o LFMakeMaker LFMakeMaker.c
Ensuite, tu met le binaire correspondant qq part dans ton path (par exemple /usr/local/bin).

2/ Récupérer Séléné

Code : Tout sélectionner

cd /tmp
git clone https://github.com/destroyedlolo/Selene
cd Selene
la procédure est dans le fichier Debian.md
Il faut donc

Code : Tout sélectionner

apt-get install libcairo2-dev libdrm-dev libfreetype6-dev
apt-get install lua5.1 liblua5.1-0-dev
et installé aussi le package libpaho-mqtt-dev. Le package existe sous Armbian, j'imagine aussi sur Raspbian. Si ce n'est pas le cas, il faut le récupéré depuis les sources et ca se résume a un make suivit de make install

3/ modifié le générateur de makefile (remake.sh)
- Commenter la ligne

Code : Tout sélectionner

USE_CURSES=1
- Décommenter la ligne

Code : Tout sélectionner

#PLUGIN_DIR=$( pwd )

(ainsi, tu n'auras rien a installer)

- Lancé

Code : Tout sélectionner

./remake.sh
Ne pas oublier de lancer la ligne qu'il indique à la fin.

- compiler

Code : Tout sélectionner

make -j3
4/ s'il n'y a pas d'erreur, vérifier si ca fonctionne ou pas

Code : Tout sélectionner

ldd ./Selene
et me dire ce que ca donne :D

Merci :)
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

dyox
Raspinaute
Messages : 970
Enregistré le : dim. 28 déc. 2014 15:28
Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe

Re: Test de compilation sous Bullseye

Message par dyox » mer. 10 nov. 2021 13:32

Voilà ce que ça donne :

Code : Tout sélectionner

sudo ./remake.sh
Lua's version : 5.1
Found Lua5.1
DirectFB not used
Curse not used.
OLED not used
DRMCairo used
Package libkms was not found in the pkg-config search path.
Perhaps you should add the directory containing `libkms.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libkms' found
WARNING : Kms is missing
with Framebuffer fallback
DEBUG not defined
No memory checking

Selene Library
--------------
LFMakeMaker 1.4 (Nov 10 2021 13:14:07)
(c) LFSoft 1997 - 2016.
reading 'elastic_storage.c'
=reading 'elastic_storage.h'
==reading 'sel_Shareable.h'
=reading 'libSelene.h'
=reading 'SelShared.h'
==reading 'configuration.h'
==reading 'SelTimedCollection.h'
==reading 'SelTimedWindowCollection.h'
Generating CC command.
Generating 'elastic_storage.o'.
reading 'LuaSupportFunc.c'
=reading 'libSelene.h'
==reading 'elastic_storage.h'
===reading 'sel_Shareable.h'
=reading 'configuration.h'
=reading 'SelShared.h'
==reading 'SelTimedCollection.h'
==reading 'SelTimedWindowCollection.h'
=reading 'internal.h'
Generating 'LuaSupportFunc.o'.
reading 'misc.c'
=reading 'libSelene.h'
==reading 'elastic_storage.h'
===reading 'sel_Shareable.h'
Generating 'misc.o'.
reading 'MQTT_tools.c'
=reading 'libSelene.h'
==reading 'elastic_storage.h'
===reading 'sel_Shareable.h'
Generating 'MQTT_tools.o'.
reading 'SelCollection.c'
=reading 'SelCollection.h'
==reading 'libSelene.h'
===reading 'elastic_storage.h'
====reading 'sel_Shareable.h'
Generating 'SelCollection.o'.
reading 'SeleMQTT.c'
=reading 'libSelene.h'
==reading 'elastic_storage.h'
===reading 'sel_Shareable.h'
=reading 'internal.h'
Generating 'SeleMQTT.o'.
reading 'Selene.c'
=reading 'libSelene.h'
==reading 'elastic_storage.h'
===reading 'sel_Shareable.h'
=reading 'configuration.h'
=reading 'SelTimer.h'
=reading 'SelShared.h'
==reading 'SelTimedCollection.h'
==reading 'SelTimedWindowCollection.h'
=reading 'SelEvent.h'
Generating 'Selene.o'.
reading 'SelEvent.c'
=reading 'libSelene.h'
==reading 'elastic_storage.h'
===reading 'sel_Shareable.h'
=reading 'SelEvent.h'
=reading 'SelShared.h'
==reading 'configuration.h'
==reading 'SelTimedCollection.h'
==reading 'SelTimedWindowCollection.h'
Generating 'SelEvent.o'.
reading 'SelFIFO.c'
=reading 'SelFIFO.h'
==reading 'libSelene.h'
===reading 'elastic_storage.h'
====reading 'sel_Shareable.h'
Generating 'SelFIFO.o'.
reading 'SelLog.c'
=reading 'libSelene.h'
==reading 'elastic_storage.h'
===reading 'sel_Shareable.h'
=reading 'internal.h'
Generating 'SelLog.o'.
reading 'SelMQTT.c'
=reading 'libSelene.h'
==reading 'elastic_storage.h'
===reading 'sel_Shareable.h'
=reading 'SelShared.h'
==reading 'configuration.h'
==reading 'SelTimedCollection.h'
==reading 'SelTimedWindowCollection.h'
=reading 'SelFIFO.h'
=reading 'SelTimer.h'
Generating 'SelMQTT.o'.
reading 'sel_Shareable.c'
=reading 'sel_Shareable.h'
Generating 'sel_Shareable.o'.
reading 'SelShared.c'
=reading 'SelShared.h'
==reading 'libSelene.h'
===reading 'elastic_storage.h'
====reading 'sel_Shareable.h'
==reading 'configuration.h'
==reading 'SelTimedCollection.h'
==reading 'SelTimedWindowCollection.h'
Generating 'SelShared.o'.
reading 'SelTimedCollection.c'
=reading 'SelTimedCollection.h'
==reading 'libSelene.h'
===reading 'elastic_storage.h'
====reading 'sel_Shareable.h'
Generating 'SelTimedCollection.o'.
reading 'SelTimedWindowCollection.c'
=reading 'SelTimedWindowCollection.h'
==reading 'libSelene.h'
===reading 'elastic_storage.h'
====reading 'sel_Shareable.h'
Generating 'SelTimedWindowCollection.o'.
reading 'SelTimer.c'
=reading 'libSelene.h'
==reading 'elastic_storage.h'
===reading 'sel_Shareable.h'
=reading 'SelTimer.h'
Generating 'SelTimer.o'.
Generating '../../libSelene.so'.
Generating 'all'.

DRMCairo plugin
---------------
LFMakeMaker 1.4 (Nov 10 2021 13:14:07)
(c) LFSoft 1997 - 2016.
reading 'DRMCairo.c'
=reading 'DRMCairo.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating CC command.
Generating 'DRMCairo.o'.
reading 'SelDCCard.c'
=reading 'DRMCairo.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'SelDCCard.o'.
reading 'SelDCFont.c'
=reading 'DRMCairo.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'SelDCFont.o'.
reading 'SelDCPattern.c'
=reading 'DRMCairo.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'SelDCPattern.o'.
reading 'SelDCSurface.c'
=reading 'DRMCairo.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'SelDCSurface.o'.
reading 'SelDCSurfaceImage.c'
=reading 'DRMCairo.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'SelDCSurfaceImage.o'.
Generating '../../../SelDRMCairo.so'.
Generating 'all'.

OLED plugin
-----------
LFMakeMaker 1.4 (Nov 10 2021 13:14:07)
(c) LFSoft 1997 - 2016.
reading 'SelOLED.c'
=reading 'SelOLED.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating CC command.
Generating 'SelOLED.o'.
Generating '../../../SelOLED.so'.
Generating 'all'.

Curses plugin
-------------
LFMakeMaker 1.4 (Nov 10 2021 13:14:07)
(c) LFSoft 1997 - 2016.
reading 'csr_window.c'
=reading 'curses.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating CC command.
Generating 'csr_window.o'.
reading 'curses.c'
=reading 'curses.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'curses.o'.
Generating '../../../SelCurses.so'.
Generating 'all'.

DirectFB source
-----------

LFMakeMaker 1.4 (Nov 10 2021 13:14:07)
(c) LFSoft 1997 - 2016.
reading 'dfb_font.c'
=reading 'directfb.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating CC command.
Generating 'dfb_font.o'.
reading 'dfb_image.c'
=reading 'directfb.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'dfb_image.o'.
reading 'dfb_layer.c'
=reading 'directfb.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'dfb_layer.o'.
reading 'dfb_screen.c'
=reading 'directfb.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'dfb_screen.o'.
reading 'dfb_surface.c'
=reading 'directfb.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'dfb_surface.o'.
reading 'dfb_window.c'
=reading 'directfb.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'dfb_window.o'.
reading 'directfb.c'
=reading 'directfb.h'
==reading '../../SeleneLibrary/libSelene.h'
Generating 'directfb.o'.
Generating '../../../SelDirectFB.so'.
Generating 'all'.

Main source
-----------
LFMakeMaker 1.4 (Nov 10 2021 13:14:07)
(c) LFSoft 1997 - 2016.
reading 'selene.c'
=reading 'SeleneLibrary/libSelene.h'
=reading 'version.h'
Generating CC command.
Generating 'selene.o'.
Generating '../Selene'.
Generating 'all'.

Don't forget if you want to run it without installing first
export LD_LIBRARY_PATH=/tmp/Selene:
et

Code : Tout sélectionner

ldd ./Selene
	linux-vdso.so.1 (0x7ef47000)
	/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0x76f0b000)
	liblua5.1.so.0 => /usr/lib/arm-linux-gnueabihf/liblua5.1.so.0 (0x76ed9000)
	libSelene.so => /tmp/Selene/libSelene.so (0x76eb3000)
	libpaho-mqtt3c.so.1 => /usr/lib/arm-linux-gnueabihf/libpaho-mqtt3c.so.1 (0x76e04000)
	libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76df0000)
	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76c9c000)
	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76c2d000)
	/lib/ld-linux-armhf.so.3 (0x76f20000)
	libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76c01000)
et avec un sudo

Code : Tout sélectionner

sudo ldd ./Selene
	linux-vdso.so.1 (0x7ec5c000)
	/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0x76f6d000)
	liblua5.1.so.0 => /usr/lib/arm-linux-gnueabihf/liblua5.1.so.0 (0x76f3b000)
	libSelene.so => not found
	libpaho-mqtt3c.so.1 => /usr/lib/arm-linux-gnueabihf/libpaho-mqtt3c.so.1 (0x76e8c000)
	libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76e78000)
	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76d24000)
	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76cb5000)
	/lib/ld-linux-armhf.so.3 (0x76f82000)
	libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76c89000)
Voilà voilà

destroyedlolo
Raspinaute
Messages : 1587
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Test de compilation sous Bullseye

Message par destroyedlolo » mer. 10 nov. 2021 16:55

Merci beaucoup ;)

Le problème reste donc le même et c'est du a Debian.

La librairie Cairo et celles qu'il requiere comme Freetype2 ne sont pas linkées avec l'executable lui-même mais avec un de ses plug-in : SelDRMCairo.so

Sur tout les environnements que j'ai essayé (Gentoo sous ARM ou sur mon PC, Buster, ...) ca marche : il y a aussi les références dans l'executable donc le dynamique lynker va chercher tout ce qui faut ... mais pas sous Bullseye :evil:
Du coup, si tu lance le bignous (ce qu'il ne faut pas faire si X est lancé vu que le but est d'avoir un dashboard léger sans X), il va grogné en disant qu'il ne trouve pas Cairo.

Arg, quelqu'un aurait-il une idée ? Pour le moment, je seche :(

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Répondre

Retourner vers « Utilisateurs avancés »