2013-04-24 37 views
10

Tôi mới trong autotools, và sau đây tutorial. nhưng tôi không thể giải quyết lỗi này,lỗi automake: không có yêu cầu thích hợp của AM_INIT_AUTOMAKE đã được tìm thấy

$ automake 
    configure.ac: error: no proper invocation of AM_INIT_AUTOMAKE was found. 
    .. 
    Makefile.am: error: required file './depcomp' not found 
    .. 
    /usr/share/automake-1.12/am/depend2.am: error: am__fastdepCC does not appear in AM_CONDITIONAL 
    .. 
    /usr/share/automake-1.12/am/depend2.am: error: AMDEP does not appear in AM_CONDITIONAL 
    .. 

tập tin configure.ac của tôi là

# -*- Autoconf -*- 
    # Process this file with autoconf to produce a configure script. 

    AC_PREREQ([2.69]) 
    AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) 
    AM_INIT_AUTOMAKE(hello,1.0) 
    AC_CONFIG_SRCDIR([config.h.in]) 
    AM_CONFIG_HEADERS(config.h) 

    # Checks for programs. 
    AC_PROG_CC 

    # Checks for libraries. 

    # Checks for header files. 
    AC_CHECK_HEADERS([sys/time.h]) 

    # Checks for typedefs, structures, and compiler characteristics. 

    # Checks for library functions. 
    AC_CHECK_FUNCS([gettimeofday]) 

    AC_CONFIG_FILES([Makefile]) 
    AC_OUTPUT 

Tôi đã kiểm tra cho giải pháp trên Internet, configure.ac của tôi có vẻ tốt đẹp, không biết những gì là sai với nó.

Trả lời

2

Bạn phải sửa từng dòng một.

Trước tiên, Makefile.am của bạn yêu cầu depcomp. Vì vậy, bạn phải sao chép nó vào thư mục của bạn (ví bước này bạn có thể chạy automake --add-missing để thêm các tập tin bị mất tự động):

cp -a /usr/share/automake-X.XX/depcomp . 

Thứ hai, bạn phải chạy aclocal trước automake:

$ aclocal 

Cuối cùng, bạn có thể chạy automake:

$ automake 
$ autoconf 
23

Bạn đã sao chép & dán configure.ac từ đâu? Dù trang web đó là gì, bạn nên xóa nó khỏi dấu trang của mình!

Bạn đang trộn AC_INIT cách mới để chỉ phiên bản gói, với cách cũ AM_INIT_AUTOMAKE để thực hiện tương tự. Đừng làm cả hai. (mới đề cập đến một chuyển đổi đã xảy ra 10 năm trước.) Bắt đầu với Tự động 1.13 cách cũ để gọi AM_INIT_AUTOMAKE với hai đối số không được hỗ trợ lâu dài.

Trong trường hợp của bạn, hãy xóa các đối số AM_INIT_AUTOMAKE và đặt chính xác số AC_INIT tranh luận để phản ánh tên và phiên bản dự án của bạn là đủ.

Xem the automake manual để biết ví dụ cập nhật về rất đơn giản configure.ac để bắt đầu.

Thay vì gọi automake, chỉ cần sử dụng autoreconf -vfi để nó chạy tất cả các công cụ có liên quan theo đúng thứ tự và cài đặt các tệp bị thiếu.

+0

bạn nói đúng, nó hoạt động, cảm ơn bạn rất nhiều. – arslan

+0

Tôi nên tìm các ví dụ mới nhất. – arslan

+0

Điểm tốt để sử dụng autoreconf. Tôi không biết điều đó. – jmmk

0

Trong trường hợp của tôi, cập nhật libtool từ 2.2.6 đến 2.4.6. ps: Tôi sử dụng phiên bản 1.15 của tự động. Chạy libtoolize trước khi chạy aclocal và autoheader.