2010-05-17 4 views
9

Quand j'ai essayé d'inclure <math.h> je trouve que je dois relier la bibliothèque de mathématiques en utilisant la commande gcc -lmEst-il possible de lier à la bibliothèque mathématique à partir du code source C dans gcc?

Mais je suis à la recherche d'une autre façon de relier la bibliothèque mathématique « dans le code », qui ne nécessite pas l'utilisateur de compiler en utilisant toutes les options ..

Can gcc -lm peut être fait en code C en utilisant #pragma ou quelque chose?

EDIT: J'ai changé -ml--lm

Répondre

11

la manière habituelle de simplifier la complication pour l'utilisateur (ou bien pour le développeur) est d'écrire un makefile.

+6

mais je ne vois pas comment il répond à la question sur les pragmas;) –

5

En premier lieu, il est gcc -lm et pas il n'y a pas #pragma destiné à donner des directives reliant

4

Non, vous devez dire à l'éditeur de liens pour lier la bibliothèque afin de lier la bibliothèque.

L'éditeur de liens ne connaît pas le code, seulement les fichiers objet compilés. Il ne verra pas de pragma spécifique à la langue.

2

Non, gcc n'a pas de pragmas pour lier aux bibliothèques. Vous devez lier à la bibliothèque mathématique avec les options de ligne de commande (c'est -lm pas -ml)

3

L'utilisation de -lm est la seule option. En outre, en utilisant #pragma pour cela est spécifique à Microsoft et plutôt sale. Imaginez qu'il existe une nouvelle bibliothèque mathématique super-efficace qui nécessite -lsupermath au lieu de -lm - alors vous devrez modifier votre code au lieu de modifier un fichier makefile ou make config.

4

Vous ne dites pas que shell UNIX que vous utilisez, mais si cela est juste pour conveniance, écrivez simplement une fonction shell:

gcm() { 
    gcc -lm $* 
} 

Mettez ça dans le fichier de démarrage de votre shell et vous pouvez compiler et lier avec la bibliothèque de mathématiques avec:

gcm mycode.c 
+3

je doute que ce soit utile dans le cas général –

Questions connexes