Jump to content

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.

Edited by Basile Starynkevitch
Link to comment
Share on other 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

Edited by smartties
  • Like 1
Link to comment
Share on other 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/ 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...