Ici, je compile d'abord curl pour demander au serveur Web. Ceci est principalement utilisé pour télécharger l'outil pip. Si votre carte de développement dispose de la commande curl, vous n'avez pas besoin de la compiler ; ou vous pouvez directement télécharger le package pip correspondant sur la carte de développement sur la page Web sans utiliser la commande curl.
Ce blog est équivalent à une extension des travaux précédents sur Ubuntu, basée sur la plate-forme Qt, appelant des fichiers Python et compilant de manière croisée pour s'exécuter sur la carte de développement Linux embarquée . Avant, je n'avais compilé que Python de manière croisée et je n'avais pas compilé de bibliothèques tierces Python. Donc ici, il est déjà par défaut que vous avez un python compilé de manière croisée. Mon chemin de compilation croisée est : /home/book/arm-python ; le chemin de tous mes packages d'installation est /home/book/pyarm . Donc, si vous ne faites pas référence au python compilé de manière croisée sur mon blog, veuillez modifier vous-même le chemin qui apparaît dans la commande suivante par le chemin lié à la compilation croisée de python .
1.2 Contexte de la compilation
Chaîne d'outils de compilation croisée : gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf
plateforme Ubuntu:ubuntu18.04.1 64 bits
Noyau de la carte de développement Linux embarqué : NXP CORTEX-A7 IMX6ULL
1.3 Étapes
Curl de compilation croisée
Utilisez crossenv pour compiler de manière croisée la bibliothèque tierce Python numpy
Migrez tout le contenu de /home/book/pyarm/curl-7.87.0/tmp/ vers le répertoire de la carte de développement /home/book/arm-python. Parce que le répertoire de mon python compilé de manière croisée sur la carte de développement est /home/book/arm-python. Veuillez le modifier dans votre propre répertoire.
3. Utilisez crossenv pour compiler de manière croisée la bibliothèque tierce Python numpy
Toutes les étapes ici sont effectuées dans Ubuntu, pas dans la carte de développement .
L'ubuntu que j'utilise est livré avec python et python3. Généralement, la machine virtuelle installée Ubuntu est livrée avec python. Si ce n'est pas le cas de votre machine virtuelle, veuillez installer python3 en fonction du type de machine virtuelle. Par exemple, utilisez simplement la commande sur Ubuntu sudo apt-get install python3.
Téléchargez le package d'installation pip : curl https://bootstrap.pypa.io/pip/3.6/get-pip.py -o get-pip.py -k. Parce que la version de python3 dans mon Ubuntu est 3.6, j'ai téléchargé get-pip.py en 3.6.
./python3 get-pip.py
Installez Cython dans l'environnement virtuel cross_venv :./pip3 install Cython
Créez request.txt : vi requirements.txt, écrivez numpy et le numéro de version. La version que j'ai téléchargée ici est la 1.13.3, j'écris donc :
Compilez de manière croisée numpy dans un package d'installation au format .whl : ./pip3 wheel --wheel-dir /home/book/arm-pylib -r requirements.txt. /home/book/arm-pylib est le chemin de stockage du package numpy au format .whl. Vous pouvez le choisir arbitrairement. Remarque : Étant donné que numpy hautes performances repose sur les bibliothèques lapack et atlas, lorsque vous utilisez directement la commande pip3 pour effectuer une compilation croisée de numpy, il recherchera les bibliothèques lapack et atlas, mais je n'ai pas trouvé de méthode appropriée pour effectuer une compilation croisée. la bibliothèque lapack ici. J'espère que vous le savez . Les partenaires sont généreux avec leurs conseils . Heureusement, ces deux bibliothèques ne sont pas des dépendances obligatoires pour l'installation du package NumPy. Autrement dit, numpy compilé sans s'appuyer sur les bibliothèques lapack et atlas fonctionne normalement, mais les performances sont légèrement moins bonnes. La solution est de définir la variable d'environnement avant la compilation pip3 :
Notez qu'ici, nous utilisons crossenv pour compiler de manière croisée le suffixe de la bibliothèque tierce numpy est linux_arm, et notre carte cible est armv7l, nous devons donc ici modifier manuellement numpy-1.13.3-cp36-cp36m-linux_arm.whl en numpy-1.13.3-cp36-cp36m-linux_armv7l.whl. Sinon, une erreur sera signalée. Pour afficher l'architecture de la carte de développement Linux, utilisez la commande sur le terminal de commande de la carte de développement : uname -a.
4. Transplantation vers la carte de développement Linux
Migrez numpy-1.13.3-cp36-cp36m-linux_armv7l.whl vers le répertoire /home/book/arm-python/bin. Parce que le répertoire de mon python compilé de manière croisée sur la carte de développement est /home/book/arm-python/bin. Veuillez le modifier dans votre propre répertoire.
Installez pip3 : ./python3 get-pip.py Une erreur apparaîtra ici : Impossible de récupérer l'URL https://pypi.org/simple/pip/ : Un problème est survenu lors de la confirmation du certificat SSL : HTTPSConnectionPool(host='pypi. org ', port = 443) : nombre maximal de tentatives dépassé avec l'url : /simple/pip/ (causé par SSLError(SSLError(1, '[SSL : CERTIFICATE_VERIFY_FAILED] échec de la vérification du certificat (_ssl.c:852)'),)) - sauter ERREUR : impossible de trouver une version qui satisfait à l'exigence pip<22.0 (à partir des versions : aucune) ERREUR : aucune distribution correspondante trouvée pour pip<22.0 signifie : impossible d'obtenir le contenu de la page Web https://pypi.org/simple /pip/ . Solution : Changer l'adresse miroir nationale . ./python3 get-pip.py -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
Vérifiez pip3 : liste ./pip3
Installez numpy : ./pip3 install numpy-1.13.3-cp36-cp36m-linux_armv7l.whl -i http://pypi.douban.com/simple --trusted-host pypi.douban.com. Remarque : Si vous ne souhaitez pas spécifier la source de l'image pour chaque installation, vous pouvez vous référer au blog https://blog.csdn.net/qq591840685/article/details/116399374 pour créer un fichier pip.conf pour spécifier l'image source.