0 votes

Exécution du binaire testMyFoo dans le shell adb

J'ai l'impression que cette question revient souvent, mais voici ce qu'il en est : J'ai un binaire testMyFoo qui

  1. est installé sur le disque dur du téléphone. /data/local/tmp/ chemin
  2. dispose des autorisations d'exécution appropriées
  3. nécessite une série de bibliothèques d'objets partagés (l'une d'entre elles étant libc++_shared.so)
  4. définir la variable LD_LIBRARY_PATH avec les chemins de recherche requis
  5. est construit avec la chaîne d'outils+sysroot correcte pour le téléphone (arm64-v8a/android33)

Ainsi, lorsque j'essaie d'exécuter ./testMyFoo :

  1. Il semble exécuter
  2. Il trouve mes librairies d'objets partagés dépendantes
  3. Il ne parvient pas à charger libc++_shared.so

J'obtiens cette erreur :

CANNOT LINK EXECUTABLE "./testMyFoo": couldn't map "/storage/emulated/0/MLZ/mlz-libs/libc/libc++_shared.so" segment 1: Permission denied

D'après ce que j'ai lu en ligne, il semble que je doive passer par un projet Android studio. J'aimerais éviter cela (pour l'instant), et exécuter mon programme directement. Des suggestions ?

Merci, Charles.

0voto

pr0nin Points 353

Généralement, le stockage interne partagé /storage/emulated/0 est monté sans restriction d'exécution.

Il semble que cela n'affecte pas seulement les exécutables, mais aussi les bibliothèques chargées par les exécutables, ce qui entraîne l'apparition d'une erreur de type Permission denied .

Il est préférable de copier les bibliothèques de manière à ce qu'elles se trouvent dans le même répertoire que votre binaire. Les bibliothèques qui ne se trouvent pas avec le binaire dans le répertoire /data/local/tmp . Le chargement des bibliothèques devrait ensuite fonctionner.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X