Lệnh biên dịch và chạy các chương trình C ++ là gì?


Câu trả lời:


108

Để biên dịch mã c ++ của bạn, hãy sử dụng:

g++ foo.cpp

foo.cpp trong ví dụ là tên của chương trình sẽ được biên dịch.

Điều này sẽ tạo ra một tệp thực thi trong cùng thư mục được gọi là a.outbạn có thể chạy bằng cách gõ cái này trong terminal của bạn:

./a.out

g ++ nên có sẵn trong $ PATH của bạn, vì vậy bạn không cần phải gọi /usr/bin/g++một cách rõ ràng, nhưng bạn có thể sử dụng cái sau trong mọi trường hợp.

foo.cppphải trong cùng thư mục bạn đang chạy lệnh từ. Nếu có bất kỳ nghi ngờ nào, bạn có thể đảm bảo rằng bạn đang ở trong cùng thư mục bằng cách nhập ls foo.cpphoặc head foo.cpp(nếu bạn cần xác minh bạn đang làm việc với chính xác foo.)

Theo ghi nhận của @ con-f-use, trình biên dịch thường sẽ làm cho tệp này có thể thực thi được, nhưng nếu không, bạn có thể tự làm điều này (để lệnh thực thi ./a.outhoặc tương đương sẽ hoạt động):

chmod +x ./a.out

Để chỉ định tên của tệp đầu ra được biên dịch, để nó không được đặt tên a.out, hãy sử dụng -ovới lệnh g ++ của bạn.

Ví dụ

g++ -o output foo.cpp

Điều này sẽ biên dịch foo.cppthành tệp nhị phân có tên outputvà bạn có thể nhập ./outputđể chạy mã được biên dịch.


6
Trình biên dịch thường làm cho tệp nhị phân ( a.outtrong trường hợp này) có thể thực thi được. Nếu không bạn có thể làm như vậy bằng cách gõ : chmod +x a.out. Khi chương trình được biên dịch của bạn có thể thực thi được, bạn có thể chạy nó gõ ./a.out- dấu chấm và dấu gạch chéo, mà bạn muốn thực thi nó.
con-f-use

@Rajeshkumar, bạn đã tìm thấy một trong những câu trả lời theo ý thích của mình chưa? Nếu vậy thì bạn có thể vui lòng đánh dấu một trong số chúng là câu trả lời được chấp nhận (bằng cách chọn dấu kiểm bên dưới mũi tên bỏ phiếu lên / xuống) để chúng tôi có thể vẽ một dòng bên dưới vấn đề này.

Có sự khác biệt giữa g ++ foo.c -o output và g ++ -o output foo.c?
Goldname

21

Tôi đang đưa ra hai giả định ở đây:

  1. Bạn đã có một tệp / chương trình nguồn C ++ sẵn sàng để xây dựng
  2. Bạn đã thiết lập một hệ thống xây dựng trên máy tính của mình

Cách đơn giản nhất để biên dịch chương trình C ++ trên Ubuntu hoặc bất kỳ bản phân phối Linux nào khác cho vấn đề đó là nhập

g++ main.cpp -o main
  • g ++ là lời gọi của thành phần C ++ của GCC , trình biên dịch defacto cho C / C ++ và toàn bộ các ngôn ngữ khác trên nền tảng Linux. Hiện tại nó là trình biên dịch duy nhất có khả năng biên dịch kernel Linux.
  • main.cpp là tệp nguồn c ++ mà bạn muốn biên dịch.
  • -o main chỉ định tên của tệp đầu ra bạn muốn tạo sau khi nguồn được biên dịch. Tệp nguồn đích và tệp đầu ra đích có thể được đảo ngược nếu bạn muốn, do đó, g++ -o main main.cppcó giá trị như nhau.
  • Để thực hiện chương trình đó, bạn cần thực hiện ./main trong terminal.

Các lệnh trên giả sử bạn đã ở vị trí của tệp nguồn, nhưng cả tệp nguồn và tệp đầu ra đích cũng có thể được chỉ định làm thư mục. Ví dụ

g++ ~/Desktop/main.cpp -o ~/Projects/main

sẽ biên dịch một tệp nguồn C ++ nằm trên màn hình của bạn và đặt tệp nhị phân thực thi trong một Projectsthư mục trong thư mục chính của bạn. Để chạy thực thi này, chạy ./Projects/main.


5

Đây là cách tôi muốn biên dịch với g ++.

$g++ -W -Wall -pedantic -o programName -p sourceFile.cpp

-W: Print extra warning messages for some problems.
-Wall: Enable all the warnings about questionable code
-pedantic: Show all the warnings demanded by strict ISO compliance
-o programName: place the executable output in programName sourceFile.cpp: the 
name of our source code file
-p: Generate extra code to write profile information suitable for the analysis program prof

1
-p: Generate extra code to write profile information suitable for the analysis program prof.
Hans

Tôi thích câu trả lời của bạn. Nó mang lại thêm gợi ý. Nhưng bạn thực sự nên diễn đạt lại nó để được chấp nhận chung.
LinuxSecurityFreak

1

Bạn cần g ++, vì gcc có thể không biên dịch tập tin cpp dễ dàng.
Bạn cũng cần học vim hoặc emacs để viết mã C.
Chỉ cần thử điều này trên thiết bị đầu cuối của bạn:

Nhập một chương trình thử nghiệm và lưu nó:

$vim hello.cc

Biên dịch hello.ccvới g ++:

$g++ hello.cc -o hello

Thực hiện nó:

$./hello

Ở đây ./có nghĩa là tệp exe nằm dưới thư mục hiện tại.


3
gcc là trình biên dịch GNU cho trình biên dịch C và C ++. Và OP không nhất thiết phải biết vim hoặc emacs để viết mã C, có rất nhiều trình soạn thảo văn bản và IDE nổi xung quanh.
Nitin Venkatesh

3
mặc dù tôi yêu vim, nếu ai đó đã đấu tranh với việc tìm ra cách giải quyết vấn đề, đề xuất vim không hữu ích lắm.
johanvdw

Cá nhân tôi không thích vi, nhưng nó không quan trọng. Bạn nên đi xa khỏi việc đề xuất một biên tập viên cụ thể, mọi người đều sử dụng riêng của họ.
LinuxSecurityFreak

0

g++là một giao diện người dùng gcc(Bộ sưu tập trình biên dịch GNU) với một số macro c ++ được xác định trước và các tùy chọn / cờ mặc định khác nhau.

biên dịch mã c ++ với gcctiện dụng khi g++không có sẵn vì bất kỳ lý do nào, thực tế đó chỉ là vấn đề liên kết với thư viện c ++ -lstdc++và thông báo cho gcc để coi đầu vào là mã c ++ (bằng cách sử dụng .Ctiện ích mở rộng hoặc buộc ngôn ngữ -x)
hậu tố tên file c ++ có giá trị khác: .cc, .cp, .cxx, .cpp, .CPP,.c++

thí dụ :

gcc cpp_code.C -lstdc++ phần mở rộng chữ hoa ( .C) rất quan trọng để gcc biết đó là tệp c ++.

hoặc chỉ định rõ ràng ngôn ngữ nhập liệu:

gcc -x c++ cpp_code.txt -lstdc++ tiện ích mở rộng có thể là bất cứ điều gì, hoặc thậm chí không có gì

theo mặc định, kết quả (sau khi biên dịch thành công) là một a.outtệp có thể được chạy với./a.out


Câu trả lời của bạn có nhiều thông tin hơn
Billal Begueradj 18/03/2017
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.