Il progetto Buildroot rende disponibile un plugin per Eclipse ma e' disponibile solo per Eclipse Luna mentre attualmente e' disponibile la versione 2019 (dove il plugin non funziona)
Se si prova scaricare Eclipse Luna e si cerca di esesguirlo su una Debian 11 non fuzionera' perche' necessita di JDK 11 (su Debian Java 8 e' stato rimosso e di default e' disponibile Java 11).
Non e' possibile usare i repository ufficiali per fare il downgrade per cui' ci si deve appoggiare ad un repository esterno con in comandi
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
echo "deb http://repos.azulsystems.com/debian stable main" | sudo tee /etc/apt/sources.list.d/zulu.list
apt-get install zulu-8
fatto cio' In Help/Install New Software di Eclipse di aggiunge il link
http://buildroot.org/downloads/eclipse/luna
e si installa il plugin Buildroot
Come esempio si puo' provare a linkare in modo dinamico la libreria ZLib
Da make menuconfig di BuildRoot si spunta Register Toolchain within Eclipse dal menu Toolchain
dopo di cio' Target packages/Libraries/Compression/ si seleziona Zlib
si esce si effettua il make
Si ritorna ad Eclipse File/New/Project/Empty Project/Buildroot MIPS e si crea un nuovo file incollando questo esempio https://github.com/madler/zlib/blob/master/test/example.c
Per abilitare la libreria si va in Project Settings/C C++ Build/Settings e si scorre verso destra dal tab Tool Settings fino a trova Pkg-config e si seleziona zlib
L'eseguibile compilato (con il comando file) dovra' contenere la seguente stringa
h5: ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, with debug_info, not stripped
Si fa quindi Build e si sposta il progetto sulla Arduino Yun in scp, si cambiano i permessi per l'esecuzione
warning: different zlib version
zlib version 1.2.11 = 0x12b0, compile flags = 0x55
uncompress(): hello, hello!
gzread(): hello, hello!
gzgets() after gzseek: hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!
root@Yun2:~# ldd ./h5
libz.so.1 => /usr/lib/libz.so.1 (0x77124000)
libc.so.0 => /lib/libc.so.0 (0x770b8000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x77095000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x77146000)
apt-get install zulu-8
fatto cio' In Help/Install New Software di Eclipse di aggiunge il link
http://buildroot.org/downloads/eclipse/luna
e si installa il plugin Buildroot
Come esempio si puo' provare a linkare in modo dinamico la libreria ZLib
Da make menuconfig di BuildRoot si spunta Register Toolchain within Eclipse dal menu Toolchain
dopo di cio' Target packages/Libraries/Compression/ si seleziona Zlib
si esce si effettua il make
Si ritorna ad Eclipse File/New/Project/Empty Project/Buildroot MIPS e si crea un nuovo file incollando questo esempio https://github.com/madler/zlib/blob/master/test/example.c
Per abilitare la libreria si va in Project Settings/C C++ Build/Settings e si scorre verso destra dal tab Tool Settings fino a trova Pkg-config e si seleziona zlib
L'eseguibile compilato (con il comando file) dovra' contenere la seguente stringa
h5: ELF 32-bit MSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, with debug_info, not stripped
warning: different zlib version
zlib version 1.2.11 = 0x12b0, compile flags = 0x55
uncompress(): hello, hello!
gzread(): hello, hello!
gzgets() after gzseek: hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!
root@Yun2:~# ldd ./h5
libz.so.1 => /usr/lib/libz.so.1 (0x77124000)
libc.so.0 => /lib/libc.so.0 (0x770b8000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x77095000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x77146000)
una volta in esecuzione il programma gira anche se si lamenta di una differenza di librerie tra quella linkata da buildroot e quella effettivamente presente sulla Yun
Se si prova a compilare con ncurses la cosa diventa piu' seria perche' buildroot linka contro ncurses 6 mentre su Yun opkg rende disponibili libncurses 5.7.5 ed il programma non si avvia