Comment passer un indicateur '-lm' ou spécifier une bibliothèque à inclure lors de l'utilisation d'Autoreconf (Autoconf)?Autoreconf et <math.h> sous Linux
Le programme comprend et je peux compiler comme ceci:
gcc -std=c99 myprogram -lm
Mais quand je compile vi autoreconf, je reçois un message d'erreur indiquant
undefined reference to 'pow'
undefined reference to 'sqrt'
etc
La question est sur Linux, le même programme compile sans erreur sur OSX. Comment éditer configure.ac ou Makefile.am pour obtenir l'indicateur -lm à gcc?
Comme vous l'avez écrit, il compile aussi correctement sous Linux. 'atuoconf' est un outil de construction, pas un compilateur. Donc, la question est, si elle s'appuie également sur OSX correctement - en utilisant les mêmes outils. – Olaf
Cela fonctionne, mais construire sur Linux nécessite des drapeaux supplémentaires, -lm pour un, -std = c99 pour un autre. – chernevik
Vous utilisez apparemment ** des outils différents sur les deux systèmes. FYI: sur Mac, 'gcc' appelle réellement' clang'. Ce sont des compilateurs différents, ils peuvent donc avoir des valeurs par défaut différentes et peuvent nécessiter des options différentes. En général, il est mauvais de s'appuyer sur les défauts d'un outil. Apparemment, vous utilisez une version pré-5 de gcc sous Linux, car elle a la valeur par défaut 'gnu90'. Utilisez une version plus récente 5 et vous obtenez le 'gnu11' par défaut qui devrait également compiler le code C99. Les bibliothèques par défaut sont un autre problème de ce type. – Olaf