Je ne sais pas si je manque quelque chose d'évident, mais il semble que je ne puisse pas calculer des racines carrées d'une variable forte> en C; La fonction SQRT () semble uniquement fonctionner sur les constantes. Ceci est mon code:
gcc -Wall -o "test2" "test2.c" (in directory: /home/eddy/Code/euler) /tmp/ccVfxkNh.o: In function `main': test2.c:(.text+0x30): undefined reference to `sqrt' collect2: ld returned 1 exit status Compilation failed.
7 Réponses :
Vous devez créer un lien avec la bibliothèque de mathématiques (utilisez un '-LM' sur la ligne de commande). Dans le cas constant, le compilateur est probablement intelligent et précomptes SQRT (2.0) (le code compilé est donc essentiellement 'B = 1.414 ...;') P>
C'est fastidieux. Qu'en est-il des autres bibliothèques, GCC a-t-il une option pour chacun d'eux?
@qed non, juste un: -l. Donc, -lm sélectionne une bibliothèque appelée "libm.a"; -LFrod0 sélectionnerait une bibliothèque appelée "libfrod0.a" en fait, elle a donc été depuis les temps anciens d'UNIX avant l'aube de GCC.
Utilisez la commande Ceci inclut la bibliothèque de mathématiques en plus de la bibliothèque d'exécution C standard C. Sur la plupart des systèmes, la bibliothèque de mathématiques est historiquement une entité distincte qui doit être explicitement demandée. P> gcc -wall -o "test2" "test2.c" -lm code> qui va probablement résoudre ce problème. p>
Compilez avec:
gcc -Wall -o test2 test2.c -lm
Cela fonctionne bien pour moi. Je pense qu'il y a un problème avec votre bibliothèque de mathématiques. Essayez de le lier à nouveau et voir. Un autre code sage est complètement parfait. P>
Inclure la bibliothèque de mathématiques à l'aide de "" Opérateur
gcc test.c -lm
Le formulaire
"math.h" code> (avec des espaces) ne fonctionnera pas.
GCC ne lie pas les bibliothèques standard par défaut. Donc, vous avez juste besoin de le faire si la compilation via GCC: P>
Cependant, dans le cas de g ++, aucun besoin de lier la bibliothèque de sorte que cela fonctionnera bien: P>
Dans le cas de GCC, vous devez relier la bibliothèque. P>
GCC FileName.c -lm. P>
Cependant, dans le cas de g ++, aucun besoin de lier la bibliothèque de sorte que cela fonctionnera bien: P>
G ++ FileName.c -O Nom de fichier Une fois la compilation réussie. P>
Pour exécuter simplement entrer ./filename dans g ++. et entrez ./a.out dans GCC. P>