2012-02-14 38 views
8

Tôi đang cố cài đặt chương trình yêu cầu thư viện libmad (thư viện giải mã âm thanh MPEG) trên Mac OS X 10.7 Lion , nhưng cài đặt kết quả libmad.0.15.b trong lỗi này:Cài đặt libmad trên Mac OS X Lion: "lỗi: CPU bạn chọn không hỗ trợ tập lệnh x86-64"

version.c:1: error: CPU you selected does not support x86-64 instruction set 

Thư viện đó cài đặt tốt trên OS X 10.5. Có phải vấn đề tương thích 64-bit không? Tôi không thể tìm thấy bất kỳ hướng dẫn cụ thể hoặc tài liệu liên quan đến cài đặt trên Lion. Bất kỳ đề xuất? Cảm ơn.

Trả lời

8

Theo mặc định, trình biên dịch C và C++ trên Snow Leopard và mới hơn tạo các tệp nhị phân 64 bit, chứ không phải 32 bit như trong các phiên bản cũ hơn của OS X. Kịch bản cấu hình libmad dường như không được thay đổi để đối phó với điều này, và do đó tạo ra các lệnh xây dựng gây ra xung đột 32/64 bit mà bạn thấy.

Điều đó có nghĩa là một cách để khắc phục sự cố đó là bắt buộc xây dựng 32 bit.

Tuy nhiên, thật dễ dàng để xác định kịch bản cấu hình vào đúng loại CPU. Đối với Lion:

$ ./configure x86_64-apple-darwin11.3.0 

cho Snow Leopard, thay đổi phiên bản kernel:

$ ./configure x86_64-apple-darwin10.6.0 
+0

bạn sẽ sao chép bản sao kế tiếp ở đâu?/sw/bin? – nycynik

+0

Nói 'sudo make install'. Điều đó sẽ thiết lập thư viện một cách chính xác. Không chỉ sao chép các tệp '.dylib' thô xung quanh. –

+1

+1 FYI: đối với Mountain Lion: './configure x86_64-apple-darwin12.2.0' và thông thường hơn,' uname -a' sẽ cho bạn biết phiên bản darwin để bạn có thể phụ thích hợp cho các phiên bản sau. – Asaph

2

Đây là một câu hỏi cũ, nhưng tôi tin rằng tôi có một câu trả lời tốt hơn so với Warren Young.

Theo mặc định, libmad-0.15.1b được định cấu hình mặc định để sử dụng -march i486 khi được xây dựng trên kiến ​​trúc * 86 mà nó không nhận ra. Bạn có thể vô hiệu hóa hành vi này, và làm cho nó xây dựng trên nền tảng 64 bit Mountain Lion của bạn, bằng cách thay đổi dòng

 i?86-*)   arch="i486" ;; 

này trong ./libmad-0.15.1b/configure.ac đến dòng này:

 i?86-*)   arch="" ;; 

Điều này sẽ cho phép libmad xây dựng cho bất kỳ kiến ​​trúc nào thực sự là hệ thống, thay vì buộc i486.

Các vấn đề liên quan