2009-10-30 11 views
1

J'essaye de compiler une version Mac de notre lib pour un client qui veut l'inclure dans un plugin Photoshop, et il a du mal à relier notre lib dans son application. Informations plus détaillées: Son plugin est construit sur le SDK Photoshop CS4, ce qui signifie que le SDK de base de Mac OS doit être 10.4. Ma lib est une statique, compilée avec le compilateur Intel 11.1 et le SDK de base est également défini comme 10.4.

J'ai testé ma lib contre une petite application de test que j'ai écrite, et elle compile et fonctionne bien (sur 10.5). Pour répliquer l'environnement de mon client, l'application est compilée avec gcc et utilise le SDK 10.4. Alors que c'est bon pour moi, mon client n'arrive pas à lier avec ma librairie. Le problème est le suivant: Undefined symbols: "_fputs $", fait référence Unix 2003. à partir de: _write_message dans libMyLib.a (libm_error.o)

Quand je compile mon lib avec gcc, et tous les autres paramètres du projet même, c'est bien, il peut générer un exécutable. Dès que je compile avec ICL, il tombe en panne. Se pourrait-il que ICL 11.1 ne soit pas compatible avec 10.4? Sur le forum du compilateur Fortran, j'ai trouvé la réponse suivante: "De la sortie fournie, il apparaît que Xcode est par défaut à Mac OS X 10.4, ce que les compilateurs 11.1 ne supportent pas." (http://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/68647/) Est-ce que cela signifie que ICL 11.1 ne fonctionne pas sur 10.4, ou que le code qu'il génère ne fonctionne pas sur 10.4 ??

Sur la page suivante (http://software.intel.com/en-us/articles/performance-tools-for-software-developers-compatibility-of-intel-compiler-for-mac-os-x-and-xcode/), il est également dit que ICL 11.1 n'est pas compatible avec 10.4 (encore une fois la même question: que signifie la compatibilité?). Cependant, il est dit que ICL 10.1 est, alors j'ai essayé. Mais maintenant, même ma propre application de test ne lie pas, pour la même raison (fonction non définie $ UNIX2003).

Est-ce que quelqu'un sait quel est le problème et comment le réparer? Ou un moyen de contourner le problème?

Merci à l'avance,

A

PS: point de bonus si quelqu'un sait ce que cela signifie un: ld: adressage absolu (peut-être -mdynamic-no-pic) utilisé dans _Cholesky de libMyLib.a (Cholesky.o) n'est pas autorisé dans l'image pouvant être glissée. Utilisez '-read_only_relocs suppress' pour activer les relocations de texte

Répondre

0

En fin de compte, vous aurez besoin d'Intel pour le support des produits Intel, mais si vous voulez vendre un logiciel Mac qui fonctionne, alors vous devriez probablement utiliser la même chaîne d'outils. comme tout le monde et oublie ça.

+0

Merci pour la réponse. Mais l'utilisation d'Intel signifie une augmentation de 4 fois des performances. Ça vaut le coup si vous me demandez. – vectorizor

+2

On dirait que cela signifie une diminution de 100% des performances si cela ne fonctionne pas. –

+0

Hehe, très vrai :) – vectorizor

1

Donc la réponse est: compiler avec ICL 10.1, pas 11.1. Aucune des bibliothèques Intel utilisées par 10.1 ne contient de références aux routines $ UNIX2003.

Espérons que ça aide quelqu'un.

A