Autoconf, Libtool ve tanımsız bir AC_PROG_LIBTOOL


17

Bir kütüphane oluşturmaya çalışıyorum ve README talimatları configure.ac'yi çağırıp sonra yapmayı amaçlıyor.

Ne yazık ki, bir hatayla karşılaşıyorum:

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

Şimdi, libtool yüklediğimi biliyorum (Scientific Linux 6.2 (yükseltilmemiş) kullanıyorum ve yum --downloadonly'yi automake, autoconf, libtool ve libtool-devel rpm'lerini almak için kullandım).

Yüklüdürler ve libtool şu anda / usr / share / libtool'da yaşıyor. Ancak, autoconf bulamıyor gibi görünüyor.

Google'ın tüm sonuçları 'install libtool' türündeydi ve bu bana hiç yardımcı olmadı. Herhangi bir yardım veya rehberlik gerçekten takdir edilecektir. Sorun rpm -i burada libtool almak berbat olup olmadığını emin değilim veya / usr / share / libtool başka bir yere (yani hangi ve her şey bulabilirsiniz) bağlamak gerekir.

Yanıtlar:


11

Çeşitli forumlarda internette bulduğum tüm "sadece yeniden yükle" cevaplarından memnun kalmadım, bu yüzden distro olmayan bir libtool kurmadan bunu çözmek için kararlı ve kararlıydı. (CentOS 7'de koşuyorum.)

Https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html adresini okuduğumda başımın üstündeki ampul yanıyordu . Makro dosyalarını bulmak için kullanılan arama yolu --prefix, varsayılan olarak genellikle olan tarafından tanımlanan yoldur /usr/local. /usr/localAramalara yüklenecek bir paket için autoconf /usr/local/share/aclocal-APIVERSIONve/usr/local/share/aclocal .

CentOS7 dahil olmak üzere birçok dağıtımda, yedi makro dosyası libtoolsaltından /usr/share/aclocalziyade altına yüklenir /usr/local/share/aclocal. Sonuç olarak, oluşturduğunuz paket önekini ayarladığında bulunmazlar /usr/local.

Zaten bir /usr/local/share/aclocaldizininiz varsa bunu düzeltmek için root olarak aşağıdakileri yazın:

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

Bir /usr/local/share/aclocaldizininiz yoksa bunu düzeltmek için root olarak aşağıdakileri yazın:

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

Voilà - problem çözüldü.


Büyük ipucu, bir CentOS 7 kümesinde bu (suuuper-ağırlaştırıcı, kalıcı) sorunu az çok düzeltti. Proje ile birlikte gönderilirse, diğer seçenekler ile birlikte dahil etmek autogen.shiçin exec autoreconfhattı da değiştirebilirsiniz, -I /usr/share/alocalaslında yaptığım budur. Komut configuredosyasını oluşturmak için çağrılan gerçek komut o zaman autoreconf -v -f -i -I /usr/share/aclocal.
thedudeabides

11

libtool yüklemelisin

Ubuntu'da:

sudo apt-get install libtool

redhat tabanlı:

yum install libtool

5
Soru zaten bunun sorun olmadığını söyledi.
Kevin Panko

9

Ayrıca libtool ve diğerlerini standart olmayan dizinlere yükledim ve bu hata aslında autoconf libtool'un m4 makrolarını bulamıyor. Evet, libtool'un kurulmamasından, aynı zamanda standart olmayan bir kurulum dizininde olmasından kaynaklanabilir. İşte benim düzeltmem:

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

benim yerleştirdiğim .bash_profile


2
Bunu yapmanın başka bir yolu: autoreconf -I $ HOME / install / libtool / share / aclocal
Moraru Lilian

1

Hatayı düzeltmek için yeniden yüklemeniz gerekir, bu nedenle aşağıdaki adımları izleyin:

1] Takılıysa mevcut libtool'u kaldırın: sudo apt-get purge libtool

2] Resmi web sitesinden indirin https://www.gnu.org/software/libtool/

3] Açın: tar -xzvf "name of the tar_file"

4] Klasörü girin ve yazın: ./configure && make

5] yükleyin: sudo make install

Ve işiniz bitti, hata düzeltilmelidir!


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

Şimdi, libtool yüklü olduğumu biliyorum ...

Bunun genellikle libtoolgeliştirme donanımınızın takılı olmadığını gösterir (libtool ).

libltdl-devDebian ve Ubuntu'ya yüklemelisiniz ; ve libtool-ltdl-develFedora'da.


İşte paketler için aramalar.

fötr şapka

$ 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
...
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.