2013-06-29 65 views
18

Tôi sử dụng ubuntu 12.04 và gcc mặc định là 4.6.3. Nó không chấp nhận lệnh C++ 11 và cho tôi đầu ra nói rằng lệnh này không tương thích với C++ 98. Tôi đã kiểm tra trực tuyến và đã thấy mọi người khuyên không nên thay đổi các trình biên dịch mặc định trên hệ điều hành vì nó trở nên không ổn định. Ai có thể đề nghị một sửa chữa hoặc một cách an toàn để tải về một trình biên dịch gcc đó là c + + 11 tuân thủ.cách thay đổi trình biên dịch gcc thành C++ 11 trên ubuntu

+8

'g ++ -std = C++ 11' hoặc nếu đó không work, 'g ++ -std = C++ 0x' – jxh

+2

Bạn luôn có thể cài đặt phiên bản GCC khác cùng với phiên bản hệ thống. Bạn thậm chí có thể biên dịch một phiên bản khác của riêng bạn. Có nhiều hướng dẫn trong mạng - chỉ cần sử dụng công cụ tìm kiếm ưa thích của bạn. GCC thường hậu tố các tệp thi hành của nó với số phiên bản và cũng cài đặt các thư viện cụ thể trong các thư mục được phiên bản để các phiên bản mới hơn sẽ không đụng độ với các phiên bản do hệ thống cung cấp. –

Trả lời

15

gcc 4.6.3 supports many c++11 features. Tuy nhiên, chúng bị tắt theo mặc định. Để bật chúng, hãy sử dụng cờ sau:

g++ -std=c++0x ... 

Cờ này cũng vô hiệu hóa phần mở rộng GNU; để kích hoạt chúng, hãy sử dụng cờ -std=gnu++0x.

+0

vì vậy tôi cần phải nhập lệnh để biên dịch như g ++ -o filename.cc -std = C++ 0x là nó? –

+1

@talasila Đúng. Bạn có thể cân nhắc nâng cấp gcc lên 4.8, [nó có hỗ trợ C++ 11 tốt hơn nhiều] (http://gcc.gnu.org/gcc-4.8/cxx0x_status.html). – dasblinkenlight

+0

làm cách nào để cập nhật trình biên dịch mặc định của tôi sang trình biên dịch mới. tại sao mọi người nói không loại bỏ một phiên bản gcc hiện có trong hệ điều hành vì nó làm cho hệ thống không ổn định? Có đúng không? –

21

Khi những người khác đã đề xuất, bạn cần nhập tùy chọn dòng lệnh std. Chúng ta hãy làm cho nó dễ dàng cho bạn

  1. mở thiết bị đầu cuối bằng cách nhấn Ctrl + Alt + T
  2. sudo gedit ~/.bashrc
  3. Nhập dòng sau dòng cuối cùng

    alias g++="g++ --std=c++0x" 
    
  4. Lưu và đóng tập tin và đóng thiết bị đầu cuối.
  5. Bây giờ mở thiết bị đầu cuối một lần nữa và biên dịch c của bạn ++ 11 chương trình đơn giản bằng cách g++ filename.cpp

Thats nó. Theo mặc định, nó sẽ biên dịch cho chuẩn C++ 11.

LƯU Ý: Nếu bạn làm theo các tùy chọn nêu trên, để biên dịch không c-++ 11 chương trình, bạn phải sử dụng

g++ --std=c++98 filename.cpp 
+0

ok. Cảm ơn. Nhưng trong lưu ý cuối cùng bạn đã đề cập rằng để biên dịch các chương trình không phải là C++ 11 thay đổi lệnh. Nhưng không phải mọi phiên bản đều tương thích ngược. Vì vậy, trình biên dịch C++ 11 nên biên dịch ngay cả một chương trình mà không có C++ 11 lệnh cụ thể. –

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