2017-07-16 5 views
-1

Pour des raisons spéciales, mes bibliothèques partagées (fichiers .so) doivent être compressées dans le fichier .zip pour les utilisations C.Dynamic Load (dlopen) bibliothèques partagées (fichiers .so) à partir du fichier zip

Est-il possible de charger dynamiquement (dlopen ou invoke) les fichiers de bibliothèques partagées (.so) à partir du fichier .zip du code C sans modifier l'éditeur de liens dynamique?

+0

Vous ne savez pas exactement ce que vous demandez. Quelle est la raison pour laquelle vous ajoutez la balise C++ 11 pour une question C? C++ est une langue différente. – Olaf

+0

mes fichiers .so est compressé. Dans ce scénario, est-il encore possible de dlopen ou d'appeler les fonctions mon fichier .so? – JoJo

+0

[m1m1x/memdlopen] (https://github.com/m1m1x/memdlopen) montre qu'il est possible * en théorie * de modifier le comportement de 'dlopen' en livepatching libc, mais en général je dirais: non, il n'y a pas de fiable façon de le faire. Même Android décompresse les fichiers '.so' au moment de l'installation au lieu de les charger à partir du' .apk' à l'exécution, et ils ont le contrôle total de leur propre exécution et de leur éditeur de liens ... – ephemient

Répondre

0

Est-il possible de charger dynamiquement (dlopen ou invoke) les fichiers de bibliothèques partagées (.so) à partir du fichier .zip du code C sans modifier l'éditeur de liens dynamique?

No.

IFF vos bibliothèques sont stockées dans le .zip non compressé, puis un patch pour GLIBC à mettre en œuvre dlopen_with_offset() est pas trop difficile (nous avons un tel patch local, il y a quelques erreurs et pièges à surveiller car cela nécessite encore de modifier l'éditeur de liens dynamique). Ce numéro feature request est également pertinent.