Aller au contenu

Compiler une application C native pour Android sous Linux (sans NDK ou SDK)


Recommended Posts

Bonjour,

 

Je connais bien Linux (en ligne de commande) et GCC (auquel je contribue, notamment via MELT - voir http://gcc-melt.org) et les binutils.

 

Je cherche à cross-compiler un hello world en C ou C++ (que je lancerais dans l'émulateur de terminal Android) sans utiliser de NDK ou de SDK, c'est à dire le plus manuellement possible, sous Linux (Debian/Sid/x86-64). Le but de l'exercice est surtout d'arriver à configurer et compiler moi même ce qui est necessaire (je pense à binutils, GCC, et probablement http://musl-libc.org/ comme libc).

 

Par contre, je connais peu Android (ma tablette est une Nexus 7, rootée, Android 4.4.2).

 

Savez vous exactement quelle plateforme cible (au sens de binutils et gcc et de leur configure) convient pour une tablette Nexus7?  Je pense (mais ne suis pas sûr) que la tablette est une  cible arm-linux-gnueabi qui est primaire pour GCC 4.9 http://gcc.gnu.org/gcc-4.9/criteria.html (c'est le trunk de GCC que je veux configurer comme compilateur croisé ciblant ma tablette).


 

Je sêche un peu sur des choses aussi basiques que le transfert de fichier système de la tablette vers mon Linux. Une commande aussi simple que file /bin/ls ne fonctionne pas dans l'émulateur de terminal Androidale. J'arrive evidemment à utiliser MTP pour voir un système de fichier de la tablette sous Linux.

 

Cordialement,

 

Basile Starynkevitch

 

PS. Le but est juste de savoir configurer une chaine de développement croisée, pour préparer un exposé sur les greffons de GCC.(au Linux Foundation Collaboration Summit); ce n'est pas de faire une véritable "application Android"; voir cette question similaire sur Stack Overflow.

Modifié par Basile Starynkevitch
Lien vers le commentaire
Partager sur d’autres sites

Salut Basile,

 

Si tu veux compiler cela dépend en effet de l'architecture de ton téléphone : 

  • arm-linux-androideabi-4.4.3   (ARM)
  • x86-4.4.3                                (x86)
  • mipsel-linux-android-4.4.3      (MIPS)

Je ne sais pas si le terminal Android te permettra d’exécuter ton Hello World, à moins d’être Root.

 

Pour transférer des fichiers de ton téléphone à ton ordinateur tu peux passer par l'interface graphique (avec le protocole MTP),

ou utiliser ADB, avec la commande :  pull <remote> <local>   

Copies a specified file from an emulator/device instance to your development computer.

 

 

Cordialement,

Martin JULES

Modifié par smartties
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Pour compiler du code applicatif C/C++ sous Android il faut utiliser le NDK (Native Development Kit).

Il n'y a pas de standard output pour un programme s'exécutant dans le contexte utilisateur sous Android, donc un simple printf("Hello, world\n"); ne peut pas suffire.

 

Exemple ici (en C++) : http://taylorpeer.com/hello-world-cpp-android-ndk/ 

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...