2017-08-15 6 views
0


J'utilise un produit dragino qui est fondamentalement un arduino Yun exécutant Linino openwrt pour un projet lié à IoT. Je reçois des données de la partie arduino et envoie json à une base de données firebase en utilisant libcurl (et HTTPS) dans un programme C sur la partie openwrt.
J'ai réussi à configurer la chaîne d'outils de compilation croisée pour AR9331 et je peux compiler des programmes simples reposant sur libc. Cependant, j'ai besoin de compiler libcurl avec le support ssl afin d'envoyer des données à firebase avec HTTPS. Cela signifie que j'ai besoin de crosscompiler openssl. Cependant, je ne suis pas sûr de l'option que je dois passer au script Configure afin de le configurer correctement. Puis-je compiler une bibliothèque statique depuis openssl et curl afin que mon programme ait une dépendance? Ou est-ce une mauvaise pratique de le faire?
Compilation croisée libcurl et openssl pour A9331

Dans ma dernière tentative de compiler OpenSSL avec:

./Configure --prefix=$(realpath $LIBPATH)/openssl linux-mips32 

où $ LIBPATH est l'emplacement de ma lib dans le toolchain. fait renvoie les éléments suivants:

apps/speed.o: In function `speed_main': 
speed.c:(.text+0x4424): undefined reference to `AES_set_encrypt_key' 
speed.c:(.text+0x443c): undefined reference to `AES_set_encrypt_key' 
speed.c:(.text+0x4454): undefined reference to `AES_set_encrypt_key' 
speed.c:(.text+0x7530): undefined reference to `AES_encrypt' 
speed.c:(.text+0x7544): undefined reference to `AES_encrypt' 
./libcrypto.so: undefined reference to `AES_set_decrypt_key' 
./libcrypto.so: undefined reference to `getcontext' 
./libcrypto.so: undefined reference to `setcontext' 
./libcrypto.so: undefined reference to `makecontext' 
./libcrypto.so: undefined reference to `AES_decrypt' 
collect2: error: ld returned 1 exit status 
Makefile.shared:180: recipe for target 'link_app.gnu' failed 

Comment puis-je compiler OpenSSL pour le AR9331? Si j'essaie d'ajouter le drapeau de l'hôte, mon architecture n'est pas reconnue.

EDIT: Peut-être que la meilleure méthode pour éviter les dépendances est de créer un paquet ipkg (gestionnaire de paquets openwrt)
Je vais essayer et vous informer si cela fonctionne.

+0

@ FilipKočica si vous modifiez quelque chose, faites-le soigneusement s'il vous plaît. Les balises '
' ne font pas mal dans le texte normal, mais elles deviennent visibles dans un bloc de code. En outre, utilisez '' si un bloc de code n'est pas du code réel. –

Répondre

0

Ces paquets devraient être présents dans Openwrt par défaut. Avez-vous essayé de les télécharger avec opkg? peut-être que vous devez vérifier les repos que vous tirez. En dernier recours, vous pouvez télécharger le code source OpenWrt et construire ces deux paquets, puis obtenir le .ipkg sur votre appareil, le système de construction OpenWrt s'occupe d'obtenir la chaîne d'outils et de tout construire pour vous.