web-dev-qa-db-fra.com

macro éventuellement non définie: AC_MSG_ERROR

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?

103
dbeer

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.

206
mutsu

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 :)

31
jørgensen

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.

27
Malvineous

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)

11
jap1968

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 ..

10
BeatingBytes

Pour Debian. Les packages requis sont: M4 automake pkg-config libtool

3
ETech

Ê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.

3
Brett Hale

Sur Mac OS X, le capitaine avec infusion, essayez:
brew installer pkgconfig 

Cela a fonctionné pour moi. 

2
us_david

Utiliser MacOS X 

Sudo port install pkgconfig

était la solution!

2
Johann Horvat

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. 

2
William Pursell

Il y a deux raisons possibles à ce problème:

  1. n'a pas installé aclocal.
    solution: installer libtool 

    • Pour Ubuntu: Sudo apt-get install libtool
    • Pour les centos: Sudo yum install libtool
  2. le chemin d'accès à LIBTOOL.m4 est une erreur.
    Solution: 

    1. utilisez aclocal --print-ac-dir pour vérifier le chemin actuel vers aclocal (généralement "/ usr/share/aclocal" ou "/ usr/share/aclocal").
    2. Puis vérifiez s'il y a des fichiers * .m4. 
    3. Sinon, cp les fichiers * .m4 correspondants dans ce chemin (peut-être 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

1
Cifang

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"

1
Sawit Meekwamdee

J'ai résolu ceci par yum install libtool

1
VictorV

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.

0
squeegee

Mon problème est résolu après l'installation de pkg-config sur Mac (installez Brew pkg-config)

0
Pavan Challa

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
0
mschoenebeck