2016-03-22 2 views
0

Je veux compiler un code de test très basique appelant la fonction log puis imprimant le résultat sur la sortie standard sous Linux, avec le compilateur Intel C. Je veux que le code soit lié à libimf (bibliothèque de fonctions mathématiques d'Intel) et pas à la bibliothèque GNU, de sorte que je puisse être sûr quelle fonction log est appelée.Comment ne pas lier avec libm en utilisant le compilateur Intel C

Jusqu'à présent, j'ont réussi à créer un lien avec libimf.so avec -limf, mais icc liens contre libm.so avec -lmpar défaut. Je voudrais éviter cela. Comment dois-je procéder?

+0

un coup de feu dans l'obscurité , avez-vous essayé de définir la variable d'environnement LD_LIBRARY_PATH? –

+0

Oui, même si je ne l'ai pas «exporté». Maintenant exportant la variable, je peux lier avec '-limf' et' ldd' montre 'libimf.so' comme prévu. Mais je voudrais ne pas lier avec '-lm' par défaut, parce que maintenant il est difficile de dire quel' log' j'appelle! – hdl

+1

Définition/exportation LD_LIBRARY_PATH remplace les autres bibliothèques. Supposons que vous ayez un nom de fichier libX.so dans/home, et qu'il y ait aussi un nom de fichier libX.so dans/lib, après avoir défini/exporté la variable d'environnement, le compilateur utilisera celui du chemin de la variable d'environnement. –

Répondre

1

à outrepasser la liaison avec des bibliothèques système, nous devrions établir et exporter le LD_LIBRARY_PATH
selon le manuel icc, liens cci contre certaines bibliothèques par défaut, pour désactiver ce comportement ajouter les -nodefaultlibs