2010-06-29 29 views
13

Tôi đã chuyển từ phiên bản gcc 4.0.3 sang 4.3.3 và nhận ra rằng -mfpmath được đặt thành sse theo mặc định trong gcc 4.3.3. Điều này thực sự gây ra lỗi trong ứng dụng của tôi. Trong 4.0.3 mfpmath là 387.gcc 4.3.3 tùy chọn trình biên dịch được bật theo mặc định

Tôi muốn biết cách tôi có thể nhận tất cả các tùy chọn mặc định được bật bởi gcc cho một phiên bản nhất định. Làm thế nào tôi có thể đổ bộ tất cả các tùy chọn được sử dụng bởi gcc trong khi biên dịch. Điều này cho phép tôi so sánh phiên bản 4.0.3 và 4.3.3.

Nói chung nó sẽ là tuyệt vời nếu tôi có thể biết một danh sách đầy đủ các thứ cần phải được kiểm tra trước khi đi cho một sự thay đổi phiên bản trong gcc. (Như này có hiệu lực thi hành về hiệu suất và chức năng.)

Trả lời

2
  1. Phiên bản tôi đã ở đây của gcc 4.3.3 không có hành vi mà bạn đang phàn nàn. Tôi đã biên dịch bản thân mình vì vậy tôi khá chắc chắn rằng phải có một lý do khác cho sự thay đổi bạn đang xem chứ không phải chỉ là phiên bản gcc (như biên dịch cho 64 bit mà luôn luôn sử dụng sse AFAIR).

  2. gcc có ghi chú phát hành thông báo về thay đổi hành vi. Chúng được đóng gói với phân phối nguồn gcc và có sẵn trên web. Đối với gcc 4.3, hãy xem http://gcc.gnu.org/gcc-4.3/changes.html.

22

gcc -Q -v (inputfile)

Chỉ với một c nhỏ cơ bản hoặc tập tin cpp như một tập tin đầu vào. Nên cung cấp cho bạn một danh sách lớn tất cả các tùy chọn được chuyển tới gcc theo mặc định, một trong những tùy chọn đó có thể khiến cho tính toán sse fp được bật.

+0

sự khác nhau giữa hai kết quả đầu ra sắp tới với gcc -Q -v: "tùy chọn được chuyển" và "tùy chọn được bật" là gì? – Maximilian

17

Ngoài biên soạn một tập tin cụ thể -Q -v, mà kết quả đầu ra danh sách các tùy chọn thông qua và được kích hoạt, cũng như rất nhiều phiên bản khác, cấu hình và thông tin thời gian, bạn cũng có thể sử dụng gcc -Q --help=target để chỉ danh sách mặc định mục tiêu cụ thể tùy chọn biên dịch:

$ gcc --version | head -1 
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 
$ gcc -Q --help=target 
The following options are target specific: 
    -m128bit-long-double     [disabled] 
    -m32         [disabled] 
    -m3dnow        [disabled] 
    -m3dnowa        [disabled] 
    -m64         [enabled] 
    -m80387        [enabled] 
    -m8bit-idiv       [disabled] 
    -m96bit-long-double     [enabled] 
    -mabi= 
    -mabm         [disabled] 
    -maccumulate-outgoing-args   [disabled] 
    -maes         [disabled] 
    -malign-double      [disabled] 
    -malign-functions= 
    -malign-jumps= 
    -malign-loops= 
    -malign-stringops      [enabled] 
    -mandroid        [disabled] 
    -march=        x86-64 
... 

Để cũng bao gồm một danh sách các lắp ráp và mối liên kết tùy chọn mục tiêu cụ thể (nhưng hiện chưa thiết lập mặc định của họ), sử dụng --target-help thay vì --help=target.

1

Ngoài -Q --help=target cho các tùy chọn nhắm mục tiêu cụ thể, bạn có thể sử dụng -Q -O<n> --help=optimize để hiển thị các trình tối ưu hóa được bật hoặc tắt ở cấp độ tối ưu nhất định. -Q cũng tự hoạt động với các đối số --help=<blah> khác.

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