2009-09-29 16 views
2

J'ai une bibliothèque .so compilée pour Linux sous le format ELF, qui est utilisée par un programme Java. J'essaye de porter cette application sur Mac OS X, et j'ai découvert que OS X utilise une extension différente pour ces fichiers, .jnilib. J'ai déjà compris comment configurer le PATH afin qu'il trouve correctement les fichiers. Cependant, OS X Java ne peut pas charger les fichiers .so (car il attend l'autre extension).Conversion d'un fichier .so en fichier .jnilib

Si je change l'extension de fichier de .so à .jnilib, la JVM peut trouver les fichiers mais ne peut pas les lire (puisqu'ils ont été compilés incorrectement).

Est-il possible, que ce soit dans un système Linux ou sous Mac OS X, sans le code source, pour convertir ces fichiers à .so.jnilib? Je soupçonne que ce n'est pas possible, mais Stack Overflow ne m'a pas encore échoué - et je ne compterais pas "ce n'est pas possible" comme un échec.

Répondre

3

Essayez-vous d'utiliser une bibliothèque native pour Linux sous Mac OS X? Non, ça ne va pas marcher.

Vous devez obtenir une version Mac de la bibliothèque native et la renommer en jnilib si elle ne possède pas déjà ce suffixe.

C'est la principale différence entre le code octet JVM et le code natif. Le code natif est très spécifique à la plate-forme. Nous avons même plusieurs versions de bibliothèques JNI pour différentes versions de Linux.

Depuis que Mac et Linux utilisent tous le même processeur et qu'ils sont tous basés sur Unix, je ne dirais pas que c'est impossible, même si c'est assez proche de cela.

+0

C'est ce dont j'avais peur. En réponse à votre première question, oui, c'est ce que je voudrais faire, et malheureusement, je ne peux pas obtenir une version Mac de la bibliothèque native - la société qui le fait n'a pas de version Mac disponible. –

Questions connexes