J’ai écrit le programme simple dans Linux Ubuntu , quand j’utilise g ++ il n’y a pas d’erreur mais quand j’utilise gcc je vois cette erreur:
test.c:1:17: fatal error: cmath: No such file or directory #include
Note: “En fait, je vois cette erreur dans la compilation du paquet, j’ai pensé que cela pourrait être lié à la bibliothèque gcc qui n’est pas définie sur l’environnement Linux, donc j’ai écrit le programme simple pour déterminer l’erreur clairement et sans dépendance!” donc le programme devrait comstackr avec gcc pour que je puisse surmonter le problème principal. Je dis que je peux utiliser math.h au lieu de cmath, mais le paquet a utilisé le cmath! c’est le programme simple:
/*test.c*/ #include #include #include #include using namespace std; int main(){ double sinx = sin(3.14/3); cout<< "sinx= " << sinx; return 0; }
voici les chemins de cmath:
root@geant4:/# find -name cmath ./opt/root5.32.00/cint/cint/include/cmath ./app/gcc/4.8.0/include/c++/4.8.0/ext/cmath ./app/gcc/4.8.0/include/c++/4.8.0/cmath ./app/gcc/4.8.0/include/c++/4.8.0/tr1/cmath ./usr/include/boost/compatibility/cpp_c_headers/cmath ./usr/include/boost/tr1/tr1/cmath ./usr/include/c++/4.5/cmath ./usr/include/c++/4.5/tr1_impl/cmath ./usr/include/c++/4.5/tr1/cmath ./usr/include/c++/4.6/cmath ./usr/include/c++/4.6/tr1/cmath ./usr/share/gccxml-0.9/GCC/2.95/cmath ./gcc-build/gcc-4.8.0/stage1-i686-pc-linux-gnu/libstdc++-v3/include/ext/cmath ./gcc-build/gcc-4.8.0/stage1-i686-pc-linux-gnu/libstdc++-v3/include/cmath ./gcc-build/gcc-4.8.0/stage1-i686-pc-linux-gnu/libstdc++-v3/include/tr1/cmath ./gcc-build/gcc-4.8.0/i686-pc-linux-gnu/libstdc++-v3/include/ext/cmath ./gcc-build/gcc-4.8.0/i686-pc-linux-gnu/libstdc++-v3/include/cmath ./gcc-build/gcc-4.8.0/i686-pc-linux-gnu/libstdc++-v3/include/tr1/cmath ./gcc-build/gcc-4.8.0/libstdc++-v3/include/ext/cmath ./gcc-build/gcc-4.8.0/libstdc++-v3/include/c/cmath ./gcc-build/gcc-4.8.0/libstdc++-v3/include/c_global/cmath ./gcc-build/gcc-4.8.0/libstdc++-v3/include/c_std/cmath ./gcc-build/gcc-4.8.0/libstdc++-v3/include/tr1/cmath ./gcc-build/gcc-4.8.0/libstdc++-v3/testsuite/26_numerics/headers/cmath ./gcc-build/gcc-4.8.0/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath ./gcc-build/gcc-4.8.0/prev-i686-pc-linux-gnu/libstdc++-v3/include/ext/cmath ./gcc-build/gcc-4.8.0/prev-i686-pc-linux-gnu/libstdc++-v3/include/cmath ./gcc-build/gcc-4.8.0/prev-i686-pc-linux-gnu/libstdc++-v3/include/tr1/cmath
et après avoir installé gcc-4.8 j’ai fait cette instruction:
root@geant4:~/Desktop# update-alternatives --install /usr/bin/gcc gcc /app/gcc/4.8.0/bin/gcc 40 --slave /usr/bin/g++ g++ /app/gcc/4.8.0/bin/g++ root@geant4:~/Desktop#update-alternatives --install /usr/bin/gcc gcc /app/gcc/4.8.0/bin/gcc 60 --slave /usr/bin/g++ g++ /app/gcc/4.8.0/bin/g++ root@geant4:~/Desktop# update-alternatives --config gcc
pour faire de gcc-4.8 mon gcc par défaut.
à présent
root@geant4:~/Desktop# gcc --version gcc (GCC) 4.8.0 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
En fait, j’ai écrit le problème principal dans https://askubuntu.com/questions/309195/cmath-no-such-file-or-directory-include-cmath
Aidez-moi, s’il vous plaît
Je ne sais pas quoi faire.
Merci
Comstackz les fichiers source C ++ avec g ++, pas avec gcc.
Quelques bases ::
GCC:: GNU Comstackr Collection G++:: GNU C++ Comstackr
Les deux sont des pilotes qui appellent les compilateurs selon les besoins.
Effacer vos doutes ::
Le problème avec GCC
est qu’il ne lie pas par défaut les bibliothèques std C ++ comme le fait G++
. GCC
n’est qu’un front-end. Le compilateur réel est cc1plus.
Il est donc toujours conseillé d’utiliser G++
lors de la compilation de fichiers C ++. Le résultat peut être identique avec GCC
et G++
si vous connaissez les arguments exacts pour les lier. Vous pouvez trouver ce lien utile.
Mais si vous souhaitez toujours utiliser GCC
, utilisez-le avec l’option -lstdc++
à la fin de la commande. Cette option d’éditeur de liens est ajoutée par défaut lorsque vous utilisez G++
. Vous pouvez le vérifier en compilant votre code en utilisant l’option GCC
avec l’option -###
et cela vous montrera que l’option -lstdc++
est manquante.