J'ai le suivant dans configure.ac:
AC_CHECK_PROGS(MAKE,$MAKE make gmake,error)
if test "x$MAKE" = "xerror" ;then
AC_MSG_ERROR([cannot find a make command])
fi
Cela fait partie de notre projet depuis longtemps, mais dans certaines configurations, j'obtiens cette erreur:
configure.ac:45: error: possibly undefined macro: AC_MSG_ERROR
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
Les lignes qui ont été récemment ajoutées ci-dessus:
AC_CONFIG_MACRO_DIR([m4])
LT_INIT
Quelqu'un peut-il expliquer les causes de cette erreur et comment identifier le problème?
EDIT: Ajout de détails sur les différences.
Boîte qui fonctionne:
uname -a Linux Host1 2.6.38-13-generic #53-Ubuntu SMP Mon Nov 28 19:33:45 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
automake: 1.11.1
autoconf: 2.67
m4: 1.4.14
libtoolize: 2.2.6b
Boîte qui ne fonctionne pas:
Linux Host2 2.6.32-35-generic-pae #78-Ubuntu SMP Tue Oct 11 17:01:12 UTC 2011 i686 GNU/Linux
automake: 1.11.1
autoconf: 2.65
m4: 1.4.13
libtoolize: 2.2.6b
NEW EDIT: seules les machines 32 bits rencontrent cette difficulté.
MIS À JOURJe peux reproduire le problème sur une machine CentOS avec autoconf 2.67
, automake 1.11.1
, libtool 2.2.6b
et m4 1.4.14
. Est-ce juste un bug avec les machines 32 bits?
J'ai eu le même problème et j'ai trouvé que le paquet pkg-config
était manquant.
Après avoir installé le paquet, tout a été généré correctement.
Il est recommandé d'utiliser autoreconf -fi
au lieu d'appeler manuellement aclocal;autoconf;automake; #and whatever else
pour renseigner correctement aclocal.m4 et ainsi de suite.
L'ajout de ACLOCAL_AMFLAGS = -I m4
(au fichier le plus complet, Makefile.am) et de AC_CONFIG_MACRO_DIR([m4])
est actuellement facultatif si vous n'utilisez pas de fichiers m4 propres, mais bien sûr, cela désactivera le processus :)
J'ai eu ce problème avec mon propre configure.ac
, mais dans ce cas (et pour le bénéfice de tous les utilisateurs de Google), c'était parce que j'avais accidentellement cité le AC_MSG_ERROR
et qu'il était donc traité comme une chaîne:
AX_BOOST_BASE([1.42], [], [AC_MSG_ERROR([Could not find Boost])])
Une fois que j'ai supprimé les crochets autour de la macro AC_MSG_ERROR
, cela a fonctionné:
AX_BOOST_BASE([1.42], [], AC_MSG_ERROR([Could not find Boost]))
Ces commentaires disant que vous devriez installer pkg-config
ou que certains paquets manquent. Le AC_MSG_ERROR
est censé fonctionner et vous donner un message utile du type "Vous devez installer le paquet XYZ", mais à cause d'un problème, le AC_MSG_ERROR
ne fonctionne pas. L'installation du paquet XYZ fera certainement disparaître l'erreur, mais seulement parce qu'une fois que le paquet est là, il n'est plus nécessaire d'imprimer un message d'erreur!
Donc, installer pkg-config
ou un paquet particulier contourne simplement le problème, cela ne le résout pas réellement.
J'ai rencontré le même problème sous CentOS 7
Dans certains cas, le problème s'est résolu après l'installation de libcurl-devel
(libcurl
était déjà installé sur cette machine)
j'ai aussi eu le même problème .. ma solution est de
apt-get install libcurl4-openssl-dev
(j'avais déjà libcurl installé) a travaillé pour moi au moins ..
Pour Debian. Les packages requis sont: M4 automake pkg-config libtool
Êtes-vous en train de créer un répertoire local 'm4
'? par exemple.,
> aclocal -I m4 --install
Certains paquets sont livrés avec un script shell autogen.sh
ou initgen.sh
pour exécuter glibtoolize, autoheader, autoconf, automake. Voici un script autogen.sh
que j'utilise:
#! /bin/sh
case `uname` in Darwin*) glibtoolize --copy ;;
*) libtoolize --copy ;; esac
autoheader
aclocal -I m4 --install
autoconf
automake --foreign --add-missing --force-missing --copy
MODIFIER
Vous devrez peut-être ajouter ACLOCAL_AMFLAGS = -I m4
au Makefile.am
de niveau supérieur.
Sur Mac OS X, le capitaine avec infusion, essayez:
brew installer pkgconfig
Cela a fonctionné pour moi.
Utiliser MacOS X
Sudo port install pkgconfig
était la solution!
L'erreur est générée par autom4te. Si les choses sont configurées correctement, la partie du code qui génère cette erreur ne devrait jamais afficher «AC_MSG_ERROR», car elle aurait dû être étendue de m4 avant ce point. Vous dites que l'erreur ne se produit que "dans certaines configurations". Je suggérerais que dans ces configurations, votre installation autoconf est fubar. Peut-être vous avez une version incompatible de m4 installée.
Il y a deux raisons possibles à ce problème:
n'a pas installé aclocal.
solution: installer libtool
Sudo apt-get install libtool
Sudo yum install libtool
le chemin d'accès à LIBTOOL.m4 est une erreur.
Solution:
aclocal --print-ac-dir
pour vérifier le chemin actuel vers aclocal (généralement "/ usr/share/aclocal" ou "/ usr/share/aclocal").cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal/
ou cp /usr/local/share/aclocal/*.m4 /usr/share/aclocal/
).J'espère que ça aide
J'ai eu le même problème sur RHEL7.5 avec otto-de/libvmod-uuid
Cela a été corrigé en installant des paquets "autoconf-archive"
J'ai résolu ceci par yum install libtool
Cela m'est arrivé lorsque j'ai oublié a, dans les arguments d'une macro définie localement. Passé des heures à essayer de le comprendre (à peine familiarisé avec autotools) ...
AC_CHECK_MACRO([Foo]
AC_LOCAL_DO([......
aurait du être
AC_CHECK_MACRO([Foo], # <-- Notice comma, doh!
AC_LOCAL_DO([......
On dirait que cela aurait dû me donner une erreur ou telle, mais je suppose que, étant un processeur macro, il ne peut faire que ce qui lui est dit.
Mon problème est résolu après l'installation de pkg-config sur Mac (installez Brew pkg-config)
J'ai eu le même problème sur Ubuntu (error: possibly undefined macro: AC_MSG_ERROR
) mais les réponses ci-dessus n'ont pas fonctionné pour moi. J'ai trouvé la solution ici
Cela a fait le tour:
$ LANG=C LC_CTYPE=C ./autogen.sh