2011-10-18 8 views
6

Tôi đã googling và cài đặt thư viện một lúc, nhưng tôi không thể hoàn toàn xử lý vấn đề này với autoconf.autoconf lỗi trên ubuntu 11.04

tôi đã tải xuống một chương trình mà tôi muốn biên dịch, thực hiện một vài thay đổi và cần chạy autogen.sh và ./configure và thực hiện cài đặt tương ứng.

tuy nhiên, khi tôi cố gắng chạy autogen.sh, tôi nhận được lỗi sau;

configure.ac:225: error: possibly undefined macro: AM_PATH_GTK_2_0 
If this token and others are legitimate, please use m4_pattern_allow. 
See the Autoconf documentation. 

vì vậy tôi tiếp tục, tải autoconf-2,68, automake-1.11, m4-1.4.16, và cố gắng sudo apt-get install libgtk2.0-dev, không ai trong số đó đã thay đổi kết quả. khi tôi thử aclocal, tôi lại gặp lỗi

configure.ac:225: warning: macro `AM_PATH_GTK_2_0' not found in library 

Tôi hiện đang bị kẹt và không có nơi nào để đi. vì vậy tôi muốn được vui mừng cho bất kỳ đề nghị.

Trả lời

5

Với tên AM_PATH_GTK_2_0, một trình tự quan sát sau đây: 1) "AM_" nằm trong không gian tên của tự động, do đó macro m4 phải đến từ tự động. 2) Hmmm, nó không có trong automake. 3) Nó có thể xuất phát từ gtk, do đó nhà phát triển gtk đã tạo ra lỗi khi đặt tên macro m4 của họ xung đột với tự động. Đó là lỗi trong gtk, nhưng có thể tôi sẽ cần để tải xuống phiên bản mới nhất của gtk để nhận macro.

Vấn đề là bạn không có macro m4 mà gtk mong đợi bạn có. Bạn có thể cần phải cài đặt libgtk-devel (hoặc một cái gì đó như thế). Nếu tôi đúng và libgtk thực sự cài đặt một macro m4 có tên AM _..., hãy báo cáo đó là lỗi cho các nhà phát triển. Họ đang dẫm lên không gian tên của ô tô (điều này thật không may, một lỗi rất phổ biến.)

Vì bạn đề cập đến việc tự động tải xuống, tôi nghĩ rằng vấn đề là bạn đang chạy aclocal không tìm trong/usr/share/aclocal , nhưng ở một vị trí khác (ví dụ, bạn đã cài đặt automake trong/usr/local) Khi bạn cài đặt libgtk-dev, nó có thể đã cài đặt tệp * .m4 trong/usr/share/aclocal, nhưng bạn cần tệp đó trong/usr/local/share/aclocal (hoặc $ prefix/share/aclocal, trong đó tiền tố là thứ bạn dùng để cài đặt automake.) Giải pháp đơn giản nhất là copy file đó thành $ (aclocal --print). Đó là, chạy "aclocal --print "để xem nơi aclocal đang tìm kiếm các tệp m4, sau đó tìm tệp mà libgtk-dev đã cài đặt xác định macro m4 không đúng tên và sao chép tệp đó vào vị trí thích hợp. Ngoài ra (và có lẽ là giải pháp tốt hơn) bạn có thể đặt một tệp có tên dirlist trong $ (aclocal --print) có chứa dòng đơn "/ usr/share/aclocal", để bàn tay của bạn được cài đặt aclocal sẽ luôn tìm các tệp m4 được cài đặt trong/usr/share.

+0

nhưng tôi đã cài đặt libgtk2.0-dev. vì vậy bạn tin rằng lỗi này đến từ các nhà phát triển của chương trình mà tôi đang cố gắng biên dịch? – fizboz

+0

hoàn toàn là nó! 'sudo cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal-1.11/' giải quyết được vấn đề. cảm ơn sự giúp đỡ của bạn :) – fizboz

+1

@fizboz: với 'sudo cp /usr/share/aclocal/*.m4/usr/local/share/aclocal-1.11 /' bạn đã đặt cài đặt của bạn vào tình trạng nguy hiểm.Lần sau khi bạn nâng cấp bất kỳ gói nào đặt macro nào đó trong '/ usr/share/aclocal /', bạn sẽ vẫn đang sử dụng phiên bản lỗi thời của macro này mà bạn đưa vào thư mục khác. Ngoài ra thư mục '/ usr/local/share/aclocal-1.11 /' chỉ nên chứa các macro Automake. Bản sửa lỗi tốt hơn là 'echo/usr/share/aclocal>/usr/local/share/aclocal/dirlist', theo đề xuất của William. – adl

9

Tôi biết đó là một hơi muộn, nhưng bạn chỉ cần phải cài đặt các thư viện libgtk2.0-dev:

sudo apt-get install libgtk2.0-dev 

Nếu bạn nhận được lỗi về điều gì đó liên quan đến GLib, sau đó cài đặt libglib2.0-dev cũng như:

sudo apt-get install libglib2.0-dev 
+1

Cảm ơn! Giải pháp rất nhanh và đơn giản. –