Exécutez un programme en langage C compilé sur Debain sur Raspberry Pi Zero.
Je souhaite créer un environnement dans lequel je peux utiliser des bibliothèques partagées.
Pour le moment, utilisons libusb
ou libjpeg
.
En continuant de Démarrage de la compilation croisée pour Raspberry Pi Zero sur Ubuntu, j'essaye à nouveau avec Debian comme machine hôte (pour une raison plus tard).
Hôte: Debian 10.6.0 <Virtual Box 6.1 <WIndows10 Cible: Raspberry Pi Zero WH
$ sudo apt install crossbuild-essential-armel
La dernière fois a essayé d'installer g ++ - arm-linux-gnueabi
, mais il semble être inclus dans crossbuild-essential-armel
Je vais donc installer ceci. Après tout, c'est gcc que j'utilise, donc ça ne fait pas beaucoup de différence.
Ajouter une architecture,
$ sudo dpkg --add-architecture armel
Édition de sources.list
. J'ajouterai le référentiel référencé par apt
.
$ sudo nano /etc/apt/sources.list
Ajoutez ce qui suit au bas de sources.list
.
Pour armel, reportez-vous également à ftp.jp.debian.org.
/etc/apt/sources.list
deb [arch=armel] http://ftp.jp.debian.org/debian buster main
Mettez à jour et installez la bibliothèque.
Vous pouvez obtenir la bibliothèque pour armel
en ajoutant: armel
.
$ sudo apt update
$ sudo apt install libusb-dev:armel
$ sudo apt install libjpeg-dev:armel
Peut-être que si le paquet est publié pour Ubuntu armel, je pense que je peux faire de même avec Ubuntu en l'ajoutant à sources.list
, mais j'ai trouvé que j'ai publié le paquet armel pour Ubuntu ne pas.
試しにUbuntuでftp.jp.debian.org/debianを追加してみましたが、「署名されてません」みたいなエラーが出てインストールできませんでした。そりゃそうか。
Existe-t-il un moyen de l'installer de manière forcée? (J'ai pu apporter le .deb et l'installer, mais j'ai abandonné car la dépendance devenait difficile)
Cliquez ici pour le programme à construire cette fois.
testUsbLib.c
#include <stdio.h>
#include <usb.h>
int main()
{
printf("call usb_init()\n");
usb_init();
printf("OK\n");
return 0;
}
Un programme inutile qui appelle juste usb_init ()
.
Il ne nettoie pas après usb_init ()
(dois-je faire quelque chose ...?).
Construisez ici.
$ arm-linux-gnueabi-gcc -march=armv6 testUsbLib.c -o testUsbLib_armv6 -lusb
Si vous pouvez construire avec succès ci-dessus, copiez le testUsbLib_armv6
généré dans un dossier approprié sur Raspberry Pi Zero,
$ testUsbLib_armv6
call usb_init()
OK
Et ça marche comme ça. Rien ne se passe, mais ...
Puisque libusb
a peu de dépendances, cela peut être très bon même si vous obtenez le fichier .deb et l'installez manuellement, mais libjpeg
etc. a de nombreuses dépendances et il y a trop d'étapes à faire manuellement, alors j'ai abandonné. Cette méthode l'a installé, y compris les dépendances, il semble donc avoir fonctionné.
Au fait, j'ai confirmé le fonctionnement de «libtiff» en plus de «libusb» et «libjpeg» par cette méthode.
Aussi, si quelqu'un sait si la même méthode peut être utilisée sur Ubuntu (s'il existe un package pour armel publié, etc.), merci de me le faire savoir.
J'ai écrit l'article suivant.