Autoconf, Libtool và AC_PROG_LIBTOOL không xác định


17

Tôi đang cố gắng xây dựng một thư viện và các hướng dẫn README sẽ gọi configure.ac, sau đó thực hiện.

Thật không may, tôi đang gặp phải một lỗi:

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

Bây giờ, tôi biết rằng tôi đã cài đặt libtool (tôi đang chạy Science Linux 6.2 (chưa được nâng cấp) và đã sử dụng yum --doadonly để nhận các rpms của automake, autoconf, libtool và libtool-devel chỉ trong trường hợp).

Chúng được cài đặt và libtool hiện đang sống trong / usr / share / libtool. Tuy nhiên, autoconf dường như không thể tìm thấy nó.

Tất cả các kết quả google đều thuộc loại 'cài đặt libtool', hoàn toàn không giúp tôi. Bất kỳ trợ giúp hoặc hướng dẫn sẽ được thực sự đánh giá cao. Tôi không chắc vấn đề là vòng tua máy-tôi đã gặp rắc rối khi nhận libtool ở đây hay nếu tôi cần liên kết / usr / share / libtool với một nơi khác (vì vậy và mọi thứ khác có thể tìm thấy nó).

Câu trả lời:


11

bạn phải cài đặt libtool

trong Ubuntu:

sudo apt-get install libtool

trong redhat dựa:

yum install libtool

5
Câu hỏi đã nói đây không phải là vấn đề.
Kevin Panko

10

Tôi không hài lòng với tất cả các câu trả lời "chỉ cần cài đặt lại" mà tôi đã tìm thấy trên Internet trên các diễn đàn khác nhau, vì vậy đã bị ràng buộc và quyết tâm giải quyết vấn đề này mà không cần cài đặt libtool không phân phối. (Tôi đang chạy trên CentOS 7.)

Cái bóng đèn trên đầu tôi sáng lên khi tôi đọc https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html . Đường dẫn tìm kiếm được sử dụng để tìm các tệp macro là đường dẫn được xác định bởi --prefix, theo mặc định thường là /usr/local. Vì vậy, autoconf cho một gói sẽ được cài đặt để /usr/localtìm kiếm /usr/local/share/aclocal-APIVERSION/usr/local/share/aclocal.

Trên nhiều bản phát hành, bao gồm cả CentOS7, bảy tệp macro libtoolsđược cài đặt bên dưới /usr/share/aclocalthay vì bên dưới /usr/local/share/aclocal. Do đó, chúng không được tìm thấy khi gói bạn đang xây dựng đặt tiền tố thành /usr/local.

Để sửa lỗi này nếu bạn đã có một /usr/local/share/aclocalthư mục, hãy nhập như sau: 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

Để khắc phục điều này nếu bạn không có /usr/local/share/aclocalthư mục, hãy nhập như sau: root:

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

Voilà - vấn đề được giải quyết.


Mẹo hay, ít nhiều đã khắc phục vấn đề này (vấn đề tăng nặng, dai dẳng) đối với tôi trên cụm CentOS 7. Nếu dự án vận chuyển với một autogen.shbạn cũng có thể sửa đổi exec autoreconfdòng để bao gồm -I /usr/share/alocalcùng với các tùy chọn khác, đó là những gì tôi thực sự đã làm. Lệnh thực tế được gọi để tạo configuretập lệnh là sau đó autoreconf -v -f -i -I /usr/share/aclocal.
TheDudeAdides

9

Tôi cũng đã cài đặt libtool và các thư mục khác vào các thư mục không chuẩn và lỗi này thực sự là autoconf không thể tìm thấy các macro m4 của libtool. Vâng, nó có thể được gây ra bởi libtool không được cài đặt, nhưng cũng có thể là do nó nằm trong một thư mục cài đặt không chuẩn. Đây là cách khắc phục của tôi:

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

mà tôi đã đặt trong .bash_profile


1
Một cách khác để làm điều này: autoreconf -I $ HOME / install / libtool / share / aclocal
Moraru Lilian

1

Bạn cần cài đặt lại để sửa lỗi, vì vậy hãy làm theo các bước sau:

1] Xóa libtool hiện tại nếu được cài đặt: sudo apt-get purge libtool

2] Tải xuống từ trang web chính thức https://www.gnu.org/software/libtool/

3] Bỏ nó: tar -xzvf "name of the tar_file"

4] Nhập thư mục và gõ: ./configure && make

5] Cài đặt nó: sudo make install

Và bạn đã làm xong, lỗi nên được sửa!


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

Bây giờ, tôi biết tôi đã cài đặt libtool ...

Tôi đã tìm thấy điều này thường cho thấy bạn không libtoolcài đặt thiết bị phát triển (mặc dù bạn có thể đã libtoolcài đặt).

Bạn nên cài đặt libltdl-devtrên Debian và Ubuntu; và libtool-ltdl-develtrên Fedora.


Dưới đây là các tìm kiếm cho các gói.

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
...
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.