2011-08-26 34 views
9

Tôi đang cố gắng gỡ lỗi một vấn đề tự động cho một dự án mã nguồn mở, đó là thất bại ở bước cấu hình. Tôi muốn xem mã/thực thi mà cấu hình đang cố gắng chạy. Tuy nhiên, config.log chỉ cho thấy một cái gì đó không thành công (không phải mã nó cố gắng biên dịch) và tôi không biết nơi các tệp thực thi tạm thời đang được lưu trữ (và chúng có thể bị xóa ngay).autotools file tạm thời

Có cách nào để tự động giữ các tệp tạm thời của nó không? Nó không quan trọng ở cấp độ nào được chỉ định - hoặc với args để cấu hình, args để autoconf khi nó tạo ra cấu hình, hoặc thậm chí một số lời gọi m4.

EDIT Khi một cái gì đó thất bại, configure.log trông như thế này:

configure:3285: checking whether we are cross compiling 
configure:3293: gcc -o conftest.exe -DU_STATIC_IMPLEMENTATION -O3 conftest.c >&5 
configure:3297: $? = 0 
configure:3304: ./conftest 
configure:3308: $? = 1 
configure:3315: error: in `/home/bobthebuilder/Development/icu/build': 
configure:3317: error: cannot run C compiled programs. 
If you meant to cross compile, use `--host'. 
See `config.log' for more details 
+0

Khi thử nghiệm không thành công cho cấu hình, config.log sẽ in ra chương trình và lệnh biên dịch được sử dụng để tạo chương trình. Đây là trường hợp của tôi ít nhất. Tôi nhận được 'cấu hình: chương trình không thành công là:' dòng ngay trước khi chương trình được in ra. – Yann

+0

@Yann: Điều đó không xảy ra với tôi. Trên MacOSX tôi thấy hành vi này, nhưng trên Ubuntu tôi thì không. – paleozogt

+0

Báo cáo config.log khi kiểm tra thất bại là gì? – Yann

Trả lời

7

Đây là một hoàn toàn hack, nhưng nó hoạt động. Bạn có thể chỉnh sửa kịch bản cấu hình; cụ thể, bạn có thể chỉnh sửa chương trình con ac_fn_c_try_compile(). Tìm kiếm dòng này trong kịch bản cấu hình, sau đó chỉnh sửa nó bằng cách thêm những dòng này ngay sau khi tuyên bố ban đầu của ac_fn_c_try_compile:.

ac_fn_c_try_compile() 
{ 
    echo "=================== " >> config.log 
    echo "conftest.$ac_ext is " >> config.log 
    cat conftest.$ac_ext >> config.log 
    echo "=================== " >> config.log 

Điều này sẽ buộc conftest $ ac_ext (tức conftest.c) được in để cấu hình .log, mọi lúc. Hãy ghi nhớ, mỗi khi bạn chạy lại autoconf (nếu bạn đang làm điều này) hoặc autoreconf, kịch bản cấu hình tùy chỉnh này sẽ bị ghi đè. Có lẽ có một cách để chiếm đoạt định nghĩa của ac_fn_c_try_compile.

+2

mẹo hay! Tôi thà đề nghị điều gì đó trên các dòng: $ as_echo "$ as_me: chương trình thử nghiệm là:"> & 5 sed 's/^/|/'conftest. $ ac_ext> & 5 – andreabedini