tùy chọn dòng lệnh gcc không được nhận dạng '-V' và '-qversion' với autoconf


15

Khi biên dịch với gcc 4.7.2 và autoconf 2.69, tôi thường xuyên nhận được các kết quả như thế này trong configure.log. Thí dụ:

configure:3091: $? = 0 
configure:3080: gcc -V >&5 
gcc: error: unrecognized command line option '-V' 
gcc: fatal error: no input files compilation terminated. 
configure:3091: $? = 1 
configure:3080: gcc -qversion >&5 
gcc: error: unrecognized command line option '-qversion' 
gcc: fatal error: no input files compilation terminated. 
configure:3091: $? = 1 
configure:3111: checking whether the C compiler works 
configure:3133: gcc -march=x86-64 -mtune=generic -Os -pipe -Wl,-O1 conftest.c >&5
configure:3137: $? = 0 
configure:3185: result: yes

Quá trình biên dịch tiến hành thành công, nhưng tôi tự hỏi tại sao autoconf đang thử nghiệm các dòng lệnh mà gcc không hỗ trợ. Đây có phải là cho trình biên dịch khác?

Câu trả lời:


11

Trích dẫn điều này:

gcc -V là cách chọn phiên bản gcc cụ thể khi bạn có nhiều phiên bản, đó là một cách giải mã ở đây: configure đang lặp qua một tập hợp các tùy chọn (--version -v -V, v.v.) để đảm bảo rằng nó có thể đăng nhập phiên bản của trình biên dịch C, có thể là gcc hoặc một cái gì đó khác.

Trích dẫn điều này:

gcc đã từng có tùy chọn -V cho các báo cáo phiên bản. Bây giờ nó sử dụng -v và cung cấp các tùy chọn cấu hình được sử dụng khi trình biên dịch được xây dựng.

Gói của bạn là một chút ngày và không phản ánh thực tế đó.

BTW, tùy chọn -qversion đã được hợp nhất vào -v ...

Trích dẫn điều này:

Trên một số phiên bản của gcc, tùy chọn -V bảo nó sử dụng một phiên bản được chỉ định của trình biên dịch - nhưng nó yêu cầu một đối số. Nó được ghi lại ở đây. Tùy chọn dường như đã bị xóa một thời gian giữa 4.5.4 và 4.6.4.

tài liệu tham khảo này:


1

Phiên bản autoconf hiện đại 2.69 có thể được sử dụng với phương pháp trích xuất thông tin trình biên dịch mở rộng sau đây:

# Provide some information about the compiler.
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
for ac_option in --version -v -V -qversion; do
  { { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
  ac_status=$?
  if test -s conftest.err; then
    sed '10a\
... rest of stderr output deleted ...
         10q' conftest.err >conftest.er1
    cat conftest.er1 >&5
    rm -f conftest.er1 conftest.err
  fi
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  if test $ac_status = 0; then break; fi}
done

Nó đã được điều chỉnh để thử các cờ trích xuất phiên bản hiện đại cũng như di sản. Bản sửa lỗi nằm ở dòng cuối cùng, cho phép bỏ qua thử nghiệm sau lần thành công đầu tiên.


"G-Man nói 'Phục hồi Monica'" đánh cắp bản chỉnh sửa của tôi. Xấu hổ về bạn
okwap
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.