Autoconf, Libtool, dan AC_PROG_LIBTOOL yang tidak ditentukan


17

Saya mencoba membangun perpustakaan, dan instruksi README adalah memanggil configure.ac, lalu buat.

Sayangnya, saya mengalami kesalahan:

configure.ac:75 :error: possibly undefined macro: AC_PROG_LIBTOOL
    If this token is legitimate please use m4_pattern_allow

Sekarang, saya tahu saya telah menginstal libtool (saya menjalankan Scientific Linux 6.2 (tidak di-upgrade), dan telah menggunakan yum --download hanya untuk mendapatkan rpms dari automake, autoconf, libtool, dan libtool-devel untuk berjaga-jaga).

Mereka terinstal, dan libtool saat ini tinggal di / usr / share / libtool. Namun, autoconf tampaknya tidak dapat menemukannya.

Semua hasil google adalah dari jenis 'install libtool', yang sama sekali tidak membantu saya. Bantuan atau bimbingan apa pun akan sangat dihargai. Saya tidak yakin apakah masalahnya adalah bahwa rpm-i mengacaukan mendapatkan libtool di sini, atau jika saya perlu menautkan / usr / share / libtool ke tempat lain (sehingga mana dan yang lainnya dapat menemukannya).

Jawaban:


11

Saya tidak puas dengan semua jawaban "instal ulang" yang saya temukan di Internet di berbagai forum, jadi saya terikat dan bertekad untuk menyelesaikan ini tanpa menginstal libtool non-distro. (Saya menggunakan CentOS 7.)

Bola lampu di atas kepala saya menyala ketika saya membaca https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html . Jalur pencarian yang digunakan untuk menemukan file makro adalah yang ditentukan oleh --prefix, yang secara default biasanya /usr/local. Jadi autoconf untuk sebuah paket yang akan diinstal untuk /usr/localpencarian /usr/local/share/aclocal-APIVERSIONdan /usr/local/share/aclocal.

Pada banyak distro, termasuk CentOS7, tujuh file makro untuk libtoolsdiinstal di bawah /usr/share/aclocaldaripada di bawah /usr/local/share/aclocal. Akibatnya, mereka tidak ditemukan ketika paket yang sedang Anda buat menetapkan awalan /usr/local.

Untuk memperbaikinya jika Anda sudah memiliki /usr/local/share/aclocaldirektori, ketikkan yang berikut ini sebagai root:

for file in argz libtool ltdl ltoptions ltsugar ltversion lt~obsolete
do
  ln -s /usr/share/aclocal/$file.m4 /usr/local/share/aclocal/$file.m4
done

Untuk memperbaikinya jika Anda tidak memiliki /usr/local/share/aclocaldirektori, ketikkan yang berikut ini sebagai root:

ln -s /usr/share/aclocal /usr/local/share/aclocal

Voa - masalah terpecahkan.


Tip bagus, lebih atau kurang memperbaiki masalah ini (suuuper-memperparah, persisten) bagi saya pada cluster CentOS 7. Jika proyek dikirimkan dengan autogen.shAnda juga dapat memodifikasi exec autoreconfbaris untuk disertakan -I /usr/share/alocalbersama dengan opsi lain, yang sebenarnya saya lakukan. Perintah aktual yang dipanggil untuk menghasilkan configureskrip kemudian autoreconf -v -f -i -I /usr/share/aclocal.
TheDudeAbides

11

Anda harus menginstal libtool

di ubuntu:

sudo apt-get install libtool

berdasarkan redhat:

yum install libtool

5
Pertanyaannya sudah mengatakan ini bukan masalahnya.
Kevin Panko

9

Saya juga menginstal libtool dan lainnya ke direktori non-standar, dan kesalahan ini sebenarnya autoconf tidak dapat menemukan makro m4 libtool. Ya itu bisa disebabkan oleh libtool tidak diinstal, tetapi juga oleh itu berada di direktori instal non-standar. Ini perbaiki saya:

export ACLOCAL_PATH=$HOME/install/libtool/share/aclocal:$ACLOCAL_PATH

yang saya tempatkan di .bash_profile


2
Cara lain untuk melakukan ini: autoreconf -I $ HOME / install / libtool / share / aclocal
Moraru Lilian

1

Anda harus menginstalnya kembali untuk memperbaiki kesalahan, jadi ikuti langkah-langkah ini:

1] Hapus libtool saat ini jika diinstal: sudo apt-get purge libtool

2] Download dari situs resmi https://www.gnu.org/software/libtool/

3] Untar it: tar -xzvf "name of the tar_file"

4] Masukkan folder dan ketik: ./configure && make

5] Pasang: sudo make install

Dan Anda selesai, kesalahan harus diperbaiki!


0
configure.ac:75 :error: possibly undefined macro: AC_PROG_LIBTOOL
    If this token is legitimate please use m4_pattern_allow

Sekarang, saya tahu saya telah menginstal libtool ...

Saya menemukan ini biasanya menunjukkan Anda tidak libtoolmenginstal gear pengembangan (meskipun Anda mungkin telah libtoolmenginstal).

Anda harus menginstal libltdl-devdi Debian dan Ubuntu; dan libtool-ltdl-develdi Fedora.


Ini adalah pencarian untuk paket-paket tersebut.

Fedora

$ yum search libtool
======================== Name Exactly Matched: libtool =========================
libtool.x86_64 : The GNU Portable Library Tool
======================= Summary & Name Matched: libtool ========================
libtool-ltdl.x86_64 : Runtime libraries for GNU Libtool Dynamic Module Loader
libtool-ltdl.i686 : Runtime libraries for GNU Libtool Dynamic Module Loader
libtool-ltdl-devel.x86_64 : Tools needed for development using the GNU Libtool
                          : Dynamic Module Loader
libtool-ltdl-devel.i686 : Tools needed for development using the GNU Libtool
                        : Dynamic Module Loader
=========================== Summary Matched: libtool ===========================
mingw32-libltdl.noarch : Runtime libraries for GNU Libtool Dynamic Module Loader
mingw64-libltdl.noarch : Runtime libraries for GNU Libtool Dynamic Module Loader

Ubuntu

$ apt-cache search libtool
autotools-dev - Update infrastructure for config.{guess,sub} files
libltdl-dev - System independent dlopen wrapper for GNU libtool
libltdl7 - System independent dlopen wrapper for GNU libtool
libtool - Generic library support script
libtool-bin - Generic library support script (libtool binary)
libtool-doc - Generic library support script
...
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.