2012-02-12 29 views
5

Dự án tôi đang làm việc trên sử dụng hệ thống phân phối phi tiêu chuẩn, nội bộ tải xuống và biên dịch các thư viện phụ thuộc. Crock này khởi chạy, cho mỗi thư viện, kịch bản configure cho làm tiền tố một thư mục nội bộ của hệ thống biên dịch. Sau đó, nó chạy makemake install, sau đó nó xác minh nội dung bằng cách tìm kiếm thư mục cài đặt với tệp lib/<mylib>.a. Bước cuối cùng này không thành công.Thư mục Lib trên bản phân phối OpenSuse 64 bit

Cố gắng hiểu điều gì đang xảy ra, tôi tự biên soạn một cặp thư viện ngẫu nhiên, bao gồm cả một trong những tác giả của tôi. Tôi nhận thấy rằng theo phân phối của tôi (openSUSE, 64 bit) đường dẫn cài đặt không được điền với /lib, nhưng thay vào đó, với /lib64.

Rõ ràng đây là cài đặt phân phối và tôi chắc chắn rằng cài đặt này liên quan đến cấu hình autotools được phân phối cùng với bản phân phối.

Có cách nào thay đổi hành vi này hay không, để thay thế, để đọc thông tin này từ hệ thống (để tôi có thể vá phần crock đã đề cập ở trên)?

Nhờ sự giúp đỡ của bạn

Cập nhật: tôi đã học về --libdir cờ trong configure, vì vậy tôi nghĩ rằng tôi có thể giải quyết vấn đề của tôi. Tuy nhiên, tôi muốn biết liệu có cách nào để biết chi tiết này không bằng cách nào đó truy vấn phân phối (ví dụ: đọc một số tệp cấu hình).

+0

Điều này không liên quan gì đến autoconf trên hệ thống vì bạn không chạy autoconf. –

+0

@WilliamPursell: Tôi không, nhưng tôi đang chạy tập lệnh 'configure'. Tôi đoán là hệ thống biên dịch dựa trên 'configure' có thể đọc một số cấu hình từ hệ điều hành (ví dụ: một số tệp trong'/etc/') để xác định nơi hệ điều hành được mong đợi tìm thư viện. – Dacav

+0

Nếu kịch bản cấu hình đang tìm trong/etc /, đó là lỗi trong gói. Tôi chưa bao giờ thấy hành vi mà bạn mô tả. Nó có thể là bạn đang tạo ra các kịch bản cấu hình với một phiên bản vá của autoconf. Tập lệnh cấu hình có chứa dòng "libdir = '$ {exec_prefix}/lib'" không? –

Trả lời

5

Kịch bản cấu hình sẽ không bao giờ cố gắng đưa ra giả định về máy hoặc cố gắng cài đặt thư viện ở các vị trí khác với $ {exec_prefix}/lib trừ khi người dùng yêu cầu rõ ràng vị trí khác cho $ libdir. Một cơ chế mà theo đó người dùng có thể yêu cầu một cách rõ ràng vị trí thay thế là thông qua tệp config.site. Nếu tệp $ {prefix} /share/config.site tồn tại, tệp có thể chỉ định giá trị thay thế cho $ libdir, khiến người dùng vô tình chỉ định rõ vị trí cài đặt thay thế.

3

Đó là câu trả lời hay của William Pursell. Tôi chỉ muốn thêm, vì câu hỏi này đặc biệt quan tâm đến openSUSE, rằng openSUSE không cài đặt một tệp có tên là config.site. Tệp tương đương thực sự được cài đặt vào /usr/share/site qua vòng lặp site-config rpm và sau đó được kích hoạt qua /etc/profile/site.{c,}sh xuất biến môi trường CONFIG_SITE để trỏ đến tệp này. Biến đó sau đó là honoured by autoconf, như bạn có thể đã thấy.

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