2016-03-22 15 views
0

Ich möchte einige sehr grundlegende Testcode kompilieren die log-Funktion aufrufen und dann das Ergebnis auf der Standard-Ausgabe unter Linux, mit dem Intel C Compiler. Ich will, dass der Code gegen libimf (Intels Math-Funktionen-Bibliothek) und nicht der GNU-libm verbunden ist, so dass ich sicher sein kann, welche log-Funktion aufgerufen wird.Wie man nicht mit libm verbindet mit Intel C Compiler

Bisher habe ich es geschafft, mit libimf.so mit -limf zu verknüpfen, aber icc Links gegen libm.so mit -lmstandardmäßig. Ich möchte das vermeiden. Wie soll ich vorgehen?

+0

ein Schuss im Dunkeln gesetzt und exportieren , haben Sie versucht, die Umgebungsvariable LD_LIBRARY_PATH zu setzen? –

+0

Ja, obwohl ich es nicht exportiert habe. Jetzt kann ich die Variable exportieren, ich kann mit '-limf' verlinken und' ldd' zeigt 'libimf.so' wie erwartet an. Aber ich möchte nicht standardmäßig mit '-lm' verlinken, da es jetzt schwer ist zu sagen, welches 'log' ich anrufe! – hdl

+1

Einstellung/Export LD_LIBRARY_PATH überschreibt andere Bibliotheken. Angenommen, Sie haben einen Dateinamen libX.so in/home, und es gibt auch einen Dateinamen libX.so in/lib, nach dem Setzen/Exportieren der env-Variable verwendet der Compiler den Pfad im env-Variablenpfad. –

Antwort

1

außer Kraft zu setzen gegen Systembibliotheken verknüpfen, sollten wir die LD_LIBRARY_PATH
nach dem icc Handbuch, icc Links gegen einige Standardbibliotheken, deaktivieren dieses Verhalten fügen Sie die -nodefaultlibs