Comment compiler un programme C qui utilise math.h?
14
J'ai des problèmes dans le fichier d'en-tête math.h et lorsque j'utilise la fonction de racine carrée comme dans sqrt(d). Mais mon compilateur ne prend pas en charge cela. Veuillez me conseiller sur ce problème.
Alors que nous aimons les questions de programmation - la question doit être liée à Ubuntu - pouvez-vous clarifier en détail quel est le problème ici - exemples, etc.?
fossfreedom
c'est comme sqrt ((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)) ... mon compilateur ne prend pas en charge cette commande
shreya
1
veuillez répondre en modifiant votre question. Donnez des exemples de code, comment vous compilez, version d'ubuntu, version du compilateur, avez-vous essayé de le faire sur un autre compilateur / distro. Que se passe-t-il, etc.?
fossfreedom
1
@shreya Les questions concernant les problèmes de code que vous avez écrits doivent décrire le problème spécifique - et inclure un code valide pour le reproduire - dans la question elle-même. Voir SSCCE.org pour des conseils.
Braiam
4
Je ne pense vraiment pas que ce soit hors sujet. Sur de nombreux autres systèmes d'exploitation, comme Windows, il n'est pas nécessaire de passer une option de l'éditeur de liens spécial pour utiliser la bibliothèque mathématique dans les programmes C. Même sur certains systèmes d'exploitation de type Unix, l'implémentation standard de la bibliothèque C ne l'exige pas. C'est un problème auquel de nombreux utilisateurs sont confrontés lorsqu'ils passent à des systèmes GNU / Linux comme Ubuntu. J'aimerais que la question soit mieux écrite pour inclure l'erreur spécifique - si nous finissons par considérer ce sujet, alors nous devrions peut-être le modifier - mais ce n'est pas une question de programmation C générale, c'est une question sur la façon d'utiliser gccsur Ubuntu .
Eliah Kagan
Réponses:
24
Ajoutez -lmà la fin de votre gcccommande.
Avec toutes les versions récentes de GCC sur des systèmes GNU / Linux comme Ubuntu, lorsque vous utilisez la bibliothèque mathématique, vous devez vous y connecter explicitement. Il n'est pas automatiquement lié au reste de la bibliothèque C standard.
Si vous allez compiler un programme C avec la bibliothèque math.h dans LINUX en utilisant GCC ou G ++, vous devrez utiliser l' option –lm après la commande de compilation.
gcc xyz.c -o xyz -lm
Ici,
gcc est la commande du compilateur (nom du compilateur) xyz.c est un nom de fichier source. -o est une option pour spécifier le fichier de sortie. xyz est le nom du fichier de sortie. -lm est une option pour relier la bibliothèque mathématique ( libm ).
Après la commande de liaison, pas la commande de compilation. (Désolé pour la sélection, mais bien faire les choses aide à comprendre d'autres situations).
gcc
sur Ubuntu .Réponses:
Ajoutez
-lm
à la fin de votregcc
commande.Avec toutes les versions récentes de GCC sur des systèmes GNU / Linux comme Ubuntu, lorsque vous utilisez la bibliothèque mathématique, vous devez vous y connecter explicitement. Il n'est pas automatiquement lié au reste de la bibliothèque C standard.
Si vous compilez sur la ligne de commande avec la commande
gcc
oug++
, vous accomplirez cela en mettant-lm
à la fin de la commande .Par exemple:
gcc -o foo foo.c -lm
la source
Si vous allez compiler un programme C avec la bibliothèque math.h dans LINUX en utilisant GCC ou G ++, vous devrez utiliser l' option –lm après la commande de compilation.
Ici,
gcc est la commande du compilateur (nom du compilateur)
xyz.c est un nom de fichier source.
-o est une option pour spécifier le fichier de sortie.
xyz est le nom du fichier de sortie.
-lm est une option pour relier la bibliothèque mathématique ( libm ).
pour plus de détails voici le lien contenant l'article complet à ce sujet.
Compiler le programme C avec math.h sous Linux.
la source