Ich habe folgendes in 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
Dies ist schon lange in unserem Projekt, aber in einigen Einstellungen erhalte ich den folgenden Fehler:
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.
Die Zeilen, die kürzlich darüber hinzugefügt wurden:
AC_CONFIG_MACRO_DIR([m4])
LT_INIT
Kann jemand erklären, was diesen Fehler verursacht und wie das Problem aufgespürt werden kann?
BEARBEITEN: Hinzufügen von Details zu den Unterschieden.
Box, die funktioniert:
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
Box, die nicht funktioniert:
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
NEUE BEARBEITUNG: Nur 32-Bit-Maschinen haben diese Schwierigkeit.
UPDATED Ich bin in der Lage , das Problem auf einem CentOS Maschine mit reproduzieren autoconf 2.67
, automake 1.11.1
, libtool 2.2.6b
, und m4 1.4.14
. Ist das nur ein Fehler bei 32-Bit-Maschinen?
Antworten:
Ich hatte das gleiche Problem und stellte fest, dass das
pkg-config
Paket fehlte.Nach der Installation des Pakets wurde alles korrekt generiert.
quelle
"-I /toolchain_local/pkg-config-0.23/share/aclocal"
derautoreconf
Befehlszeile hinzuzufügen . Ich habe einige Zeit gebraucht, um festzustellen, dass pkg-config nicht nur Binärdateien installiert.rpm -ql pkgconfig
geholfen.libtool
.AC_MSG_ERROR
wurde versucht zu sagen, dass Sie pkg-config installieren müssen, aber aus irgendeinem Grund konnte diese Nachricht nicht gedruckt werden (was den Fehler betrifftAC_MSG_ERROR
). Durch die Installation musstepkg-config
keine Fehlermeldung mehr gedruckt werden, sodass dieAC_MSG_ERROR
Zeile übersprungen wurde und alles funktioniert. Gut, wenn Sie das Paket eines anderen installieren, aber wenn es Ihr eigener Code ist, haben Sie das Problem immer noch nicht behoben :-)autoconf-archive
Pakets hat das Problem behoben.Es wird empfohlen,
autoreconf -fi
anstelle von manuell aufzurufenaclocal;autoconf;automake; #and whatever else
, um aclocal.m4 usw. ordnungsgemäß zu füllen.Das Hinzufügen
ACLOCAL_AMFLAGS = -I m4
(zur obersten Ebene von Makefile.am)AC_CONFIG_MACRO_DIR([m4])
ist derzeit noch optional, wenn Sie keine eigenen m4-Dateien verwenden. Wenn Sie dies jedoch tun, wird der Vorgang zum Schweigen gebracht :)quelle
autoreconf -fi
PCRE kompiliert.ACLOCAL_AMFLAGS
hatteMakefile.am
- danke!Ich hatte dieses Problem mit meinem eigenen
configure.ac
, aber in diesem Fall (und zum Nutzen aller hier von Google) lag es daran, dass ich das versehentlich zitiert hatte,AC_MSG_ERROR
sodass es als Zeichenfolge behandelt wurde:Nachdem ich die eckigen Klammern um das
AC_MSG_ERROR
Makro entfernt hatte, funktionierte es:Diese Kommentare, die besagen, dass Sie
pkg-config
ein Paket installieren sollten, verfehlen den Punkt. DasAC_MSG_ERROR
soll funktionieren und Ihnen eine hilfreiche Meldung wie "Sie müssen das Paket XYZ installieren" geben, aber aufgrund eines ProblemsAC_MSG_ERROR
funktioniert das nicht. Durch die Installation des Pakets XYZ wird der Fehler sicherlich behoben, aber nur, wenn das Paket erst einmal vorhanden ist, muss keine Fehlermeldung mehr gedruckt werden!Die Installation
pkg-config
oder ein bestimmtes Paket umgeht das Problem also nur, es behebt es nicht wirklich.quelle
Ich hatte auch ein ähnliches Problem. Meine Lösung ist zu
(Ich hatte libcurl bereits installiert) arbeitete zumindest für mich ..
quelle
Ich habe das gleiche Problem unter CentOS 7 erlebt
In einigen Fällen ist das Problem nach der Installation von
libcurl-devel
(libcurl
wurde bereits auf diesem Computer installiert) behoben.quelle
Ich hatte das gleiche Problem auf RHEL7.5 mit otto-de / libvmod-uuid
Es wurde durch die Installation von "autoconf-archive" -Paketen behoben
quelle
Richten Sie ein lokales
m4
Verzeichnis ein? z.B,> aclocal -I m4 --install
Einige Pakete enthalten ein
autogen.sh
oder eininitgen.sh
Shell-Skript zum Ausführen von glibtoolize, autoheader, autoconf, automake. Hier ist einautogen.sh
Skript, das ich benutze:BEARBEITEN
Möglicherweise müssen Sie
ACLOCAL_AMFLAGS = -I m4
der obersten Ebene hinzufügenMakefile.am
.quelle
ACLOCAL_AMFLAGS
Variable hinzugefügt ?Für Debian. Erforderliche Pakete sind: m4 automake pkg-config libtool
quelle
Der Fehler wird von autom4te generiert. Wenn die Dinge richtig eingerichtet sind, sollte der Teil des Codes, der diesen Fehler erzeugt, niemals 'AC_MSG_ERROR' sehen, da er vor diesem Punkt um m4 erweitert worden sein sollte. Sie sagen, der Fehler tritt nur "in einigen Setups" auf. Ich würde vorschlagen, dass in diesen Setups Ihre Autoconf-Installation fubar ist. Möglicherweise ist eine inkompatible Version von m4 installiert.
quelle
Verwenden von MacOS X.
war die Lösung!
quelle
Versuchen Sie unter Mac OS X el Kapitän mit Gebräu:
Brew Brew install pkgconfig
Das hat bei mir funktioniert.
quelle
Es gibt zwei mögliche Gründe für dieses Problem:
hat aclocal nicht installiert.
Lösung: Installieren Sie libtool
sudo apt-get install libtool
sudo yum install libtool
Der Pfad zu LIBTOOL.m4 ist fehlerhaft.
Lösung:
aclocal --print-ac-dir
Sie diese Option, um den aktuellen Pfad zu aclocal zu überprüfen. (Normalerweise sollte dies "/ usr / share / aclocal" oder "/ usr / share / aclocal" sein.)cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal/
odercp /usr/local/share/aclocal/*.m4 /usr/share/aclocal/
)Ich hoffe es hilft
quelle
Ich hatte das gleiche Problem unter Ubuntu (
error: possibly undefined macro: AC_MSG_ERROR
), aber die obigen Antworten haben bei mir nicht funktioniert. Ich habe hier die Lösung gefundenDas hat funktioniert:
quelle
Mein Problem ist behoben, nachdem ich pkg-config auf einem Mac installiert habe (braue install pkg-config)
quelle
Ich habe das gelöst durch
yum install libtool
quelle
Dies passierte mir, als ich a in den Argumenten für ein lokal definiertes Makro vergaß. Verbrachte Stunden damit, es herauszufinden (kaum mit Autotools vertraut) ...
gewesen sein sollte
Scheint, als hätte es mir einen Fehler oder ähnliches geben sollen, aber ich nehme an, dass es als Makroprozessor nur das kann, was es sagt.
quelle
Ich habe gerade ein paar Stunden verloren. Meine Schlussfolgerung:
quelle
Ich hatte ähnliche Probleme beim Versuch, amtk und utthpmock mit jhbuild zu erstellen.
Ich musste die neueste Version von autoconf-archive installieren. Anweisungen finden Sie unter https://github.com/autoconf-archive/autoconf-archive/blob/master/README-maint . Ich habe
sudo make install
am Ende eine zusätzliche gemacht .Der letzte Schritt war, meine zu aktualisieren
ACLOCAL_PATH
:Nach a
source ~/.bashrc
wurden endlich alle Makros gefunden und die Builds waren erfolgreich.quelle
Ich hatte das gleiche Problem mit dem Macports-Port "openocd" (lokal die Portdatei geändert, um das Git-Repository zu verwenden) auf einem frisch installierten Computer.
Die dauerhafte Korrektur ist einfach. Definieren Sie eine Abhängigkeit von pkgconfig in der Portdatei: abhängige_Lib-Append-Port: pkgconfig
quelle