Autoconf, Libtool และ AC_PROG_LIBTOOL ที่ไม่ได้กำหนด


17

ฉันกำลังพยายามสร้างห้องสมุดและคำแนะนำ README คือโทรหา configure.ac จากนั้นสร้าง

น่าเสียดายที่ฉันพบข้อผิดพลาด:

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

ตอนนี้ฉันรู้ว่าฉันได้ติดตั้ง libtool แล้ว (ฉันใช้ Scientific Linux 6.2 (ไม่ได้อัปเกรด) และได้ใช้ yum - ดาวน์โหลดเพียงเพื่อรับ rpms จาก automake, autoconf, libtool และ libtool-devel ในกรณีนี้)

มีการติดตั้งและ libtool อยู่ใน / usr / share / libtool อย่างไรก็ตามดูเหมือนว่า autoconf ไม่สามารถค้นหาได้

ผลลัพธ์ของ google ทั้งหมดเป็นประเภท 'ติดตั้ง libtool' ซึ่งไม่ได้ช่วยฉันเลย ความช่วยเหลือหรือคำแนะนำใด ๆ จะได้รับการชื่นชมจริงๆ ฉันไม่แน่ใจว่าปัญหาคือ rpm -i หรือไม่หากฉันต้องเชื่อมโยง / usr / share / libtool ไปยังที่อื่น (และสิ่งอื่นสามารถหาได้)

คำตอบ:


11

ฉันไม่พอใจคำตอบ "เพิ่งติดตั้งใหม่" ทั้งหมดที่ฉันพบทั่วอินเทอร์เน็ตในฟอรัมต่าง ๆ ดังนั้นถูกผูกไว้และมุ่งมั่นที่จะแก้ไขปัญหานี้โดยไม่ติดตั้ง libtool ที่ไม่ใช่ distro (ฉันทำงานบน CentOS 7)

หลอดไฟเหนือหัวของฉันสว่างขึ้นเมื่อฉันอ่านhttps://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html พา ธ การค้นหาที่ใช้เพื่อค้นหาไฟล์มาโครเป็นพา ธ ที่กำหนดโดย--prefixปกติแล้วโดยปกติ/usr/localแล้ว ดังนั้น autoconf สำหรับแพคเกจซึ่งจะถูกติดตั้งกับ/usr/localการค้นหาและ/usr/local/share/aclocal-APIVERSION/usr/local/share/aclocal

บน distros จำนวนมากรวมทั้ง CentOS7 เจ็ดไฟล์แมโครสำหรับlibtoolsการติดตั้งภายใต้มากกว่าภายใต้/usr/share/aclocal ดังนั้นพวกเขาจะไม่พบเมื่อแพคเกจที่คุณกำลังสร้างชุดคำนำหน้า/usr/local/share/aclocal/usr/local

ในการแก้ไขปัญหานี้หากคุณมี/usr/local/share/aclocalไดเรกทอรีอยู่แล้วให้พิมพ์ดังต่อไปนี้เป็นรูท:

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

ในการแก้ไขปัญหานี้หากคุณไม่มี/usr/local/share/aclocalไดเรกทอรีให้พิมพ์ดังต่อไปนี้เป็นรูท:

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

Voilà - แก้ไขปัญหาแล้ว


เคล็ดลับที่ยอดเยี่ยมแก้ไขปัญหานี้มากขึ้นหรือน้อยลง (suuuper-aggravating, persistent) สำหรับฉันในคลัสเตอร์ CentOS 7 หากโครงการมาพร้อมกับautogen.shคุณยังสามารถปรับเปลี่ยนexec autoreconfบรรทัดเพื่อรวม-I /usr/share/alocalพร้อมกับตัวเลือกอื่น ๆ ซึ่งเป็นสิ่งที่ฉันทำจริง คำสั่งที่เกิดขึ้นจริงเรียกเพื่อสร้างสคริปต์แล้วconfigure autoreconf -v -f -i -I /usr/share/aclocal
TheDudeAbides

11

คุณต้องติดตั้ง libtool

ในอูบุนตู:

sudo apt-get install libtool

ใน redhat ตาม:

yum install libtool

5
คำถามที่บอกไปแล้วว่านี่ไม่ใช่ปัญหา
Kevin Panko

9

ฉันยังติดตั้ง libtool และอื่น ๆ ลงในไดเรกทอรีที่ไม่ได้มาตรฐานและข้อผิดพลาดนี้คือ autoconf ที่ไม่สามารถค้นหามาโคร m4 ของ libtool ได้ ใช่มันอาจเกิดจาก libtool ไม่ได้ถูกติดตั้ง แต่มันเกิดจากในไดเรกทอรีติดตั้งที่ไม่ได้มาตรฐาน นี่คือการแก้ไขของฉัน:

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

ซึ่งฉันวางไว้ใน .bash_profile


2
อีกวิธีในการทำเช่นนี้: autoreconf -I $ HOME / ติดตั้ง / libtool / share / aclocal
Moraru Lilian

1

คุณต้องติดตั้งใหม่เพื่อแก้ไขข้อผิดพลาดดังนั้นทำตามขั้นตอนเหล่านี้:

1] ลบ libtool ปัจจุบันหากติดตั้ง: sudo apt-get purge libtool

2] ดาวน์โหลดได้จากเว็บไซต์ทางการhttps://www.gnu.org/software/libtool/

3] untar มัน: tar -xzvf "name of the tar_file"

4] ใส่โฟลเดอร์และประเภท: ./configure && make

5] ติดตั้งมัน: sudo make install

และคุณทำเสร็จแล้วควรแก้ไขข้อผิดพลาด!


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

ตอนนี้ฉันรู้ว่าฉันติดตั้ง libtool แล้ว ...

ฉันพบสิ่งนี้มักจะระบุว่าคุณไม่ได้libtoolติดตั้งอุปกรณ์สำหรับการพัฒนา (แม้ว่าคุณอาจlibtoolติดตั้งแล้ว)

คุณควรติดตั้งlibltdl-devบน Debian และ Ubuntu; และlibtool-ltdl-develใน Fedora


นี่คือการค้นหาแพคเกจ

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

อูบุนตู

$ 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
...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.