Apa itu perintah untuk mengkompilasi dan menjalankan program C ++?

89

Saya baru mengenal Linux. Saya menggunakan Ubuntu 11.04 dan tidak tahu bagaimana cara mengkompilasi dan menjalankan program C ++ di dalamnya. Saya perlu tahu perintah untuk Mengkompilasi dan Menjalankan program C ++ di Linux.

Rajeshkumar
sumber
1
Apakah ada jawaban yang membantu Anda?
lindhe

Jawaban:

108

Untuk mengkompilasi kode c ++ Anda, gunakan:

g++ foo.cpp

foo.cpp dalam contoh ini adalah nama program yang akan dikompilasi.

Ini akan menghasilkan executable di direktori yang sama yang disebut a.outyang dapat Anda jalankan dengan mengetikkan ini di terminal Anda:

./a.out

g ++ seharusnya sudah dalam $ PATH Anda, jadi Anda tidak perlu menelepon /usr/bin/g++secara eksplisit, tetapi Anda dapat menggunakan yang terakhir dalam hal apa pun.

foo.cppseharusnya berada di direktori yang sama dengan tempat Anda menjalankan perintah. Jika ada keraguan, Anda dapat memastikan Anda berada di direktori yang sama dengan mengetik ls foo.cppatau head foo.cpp(jika Anda perlu memverifikasi Anda bekerja dengan yang benar foo.)

Seperti dicatat oleh @ con-f-use, kompiler biasanya akan membuat file ini dapat dieksekusi, tetapi jika tidak, Anda bisa melakukannya sendiri (sehingga perintah untuk mengeksekusi, ./a.outatau yang setara, akan bekerja):

chmod +x ./a.out

Untuk menentukan nama file output yang dikompilasi, sehingga tidak bernama a.out, gunakan -odengan perintah g ++ Anda.

Misalnya

g++ -o output foo.cpp

Ini akan dikompilasi foo.cppke file biner bernama output, dan Anda dapat mengetik ./outputuntuk menjalankan kode yang dikompilasi.

belacqua
sumber
6
Kompiler biasanya membuat biner ( a.outdalam hal ini) dapat dieksekusi. Jika tidak, Anda dapat melakukannya dengan mengetik: chmod +x a.out. Ketika program terkompilasi Anda dapat dieksekusi, Anda dapat menjalankannya mengetik ./a.out- titik dan indikasi garis miring, yang ingin Anda jalankan.
con-f-use
@Rajeshkumar, apakah Anda menemukan salah satu jawaban ini sesuai dengan keinginan Anda? Jika demikian, bisakah Anda menandai salah satu dari mereka sebagai jawaban yang diterima (dengan memilih tanda centang di bawah panah suara atas / bawah) sehingga kami dapat menarik garis di bawah masalah ini.
Apakah ada perbedaan antara g ++ foo.c -o output dan g ++ -o output foo.c?
Goldname
21

Saya membuat dua asumsi di sini:

  1. Anda sudah memiliki file / program sumber C ++ yang siap dibangun
  2. Anda telah menyiapkan sistem pembangunan di komputer Anda

Cara paling sederhana untuk mengkompilasi program C ++ di Ubuntu, atau distro Linux lainnya, adalah mengetik

g++ main.cpp -o main
  • g ++ adalah doa dari komponen C ++ dari GCC , kompiler defacto untuk C / C ++ dan seluruh host bahasa lain pada platform Linux. Saat ini satu-satunya kompiler yang mampu mengkompilasi kernel Linux.
  • main.cpp adalah file sumber c ++ yang ingin Anda kompilasi.
  • -o main menentukan nama file output yang ingin Anda buat setelah sumber dikompilasi. File sumber target dan file output target dapat dibalik jika Anda inginkan, jadi g++ -o main main.cppsama-sama valid.
  • Untuk kemudian menjalankan program itu, Anda harus melakukan ./main di terminal.

Perintah di atas menganggap Anda sudah berada di lokasi file sumber, tetapi file sumber dan target file juga dapat ditentukan sebagai direktori. Sebagai contoh

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

akan mengkompilasi file sumber C ++ yang terletak di desktop Anda dan menempatkan biner yang dapat dieksekusi dalam Projectsfolder di direktori home Anda. Untuk menjalankan executable ini, jalankan ./Projects/main.


sumber
5

Ini adalah bagaimana saya suka mengkompilasi dengan 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
amrx
sumber
1
-p: Generate extra code to write profile information suitable for the analysis program prof.
Hans
Saya suka jawaban Anda. Itu membawa saran tambahan. Tetapi Anda harus benar-benar mengucapkannya kembali agar dapat diterima secara umum.
LinuxSecurityFreak
1

Anda memerlukan g ++, karena gcc mungkin tidak dapat mengkompilasi file cpp dengan mudah.
Anda juga perlu mempelajari vim atau emacs untuk menulis kode C.
Coba saja ini di terminal Anda:

Ketikkan program uji dan simpan:

$vim hello.cc

Kompilasi hello.ccdengan g ++:

$g++ hello.cc -o hello

Jalankan:

$./hello

Di sini ./berarti file exe berada di bawah direktori saat ini.

bigeast
sumber
3
gcc adalah kompiler GNU untuk kompiler C dan C ++. Dan OP tidak perlu tahu vim atau emacs untuk menulis kode C, ada banyak editor teks lain dan IDE yang beredar.
Nitin Venkatesh
3
meskipun saya suka vim, jika seseorang sudah berjuang mencari tahu cara mengatasi masalah, menyarankan vim tidak terlalu berguna.
johanvdw
Saya pribadi tidak suka vi, tapi itu tidak masalah. Anda harus menyimpang dari menyarankan editor tertentu, bagaimanapun juga semua orang menggunakan miliknya.
LinuxSecurityFreak
0

g++adalah front-end to gcc(GNU Compiler Collection) dengan beberapa makro c ++ yang telah ditentukan dan opsi / flag default yang berbeda.

mengkompilasi kode c ++ dengan gccmudah ketika g++tidak tersedia untuk sejumlah alasan, sebenarnya itu hanya masalah menghubungkan ke perpustakaan c ++ -lstdc++dan memberitahu gcc untuk memperlakukan input sebagai kode c ++ (baik dengan menggunakan .Cekstensi, atau memaksa bahasa dengan -x)
nama file yang c ++ akhiran valid lainnya: .cc, .cp, .cxx, .cpp, .CPP,.c++

contoh:

gcc cpp_code.C -lstdc++ ekstensi huruf besar ( .C) penting bagi gcc untuk mengetahui file c ++.

atau secara spesifik menentukan bahasa input:

gcc -x c++ cpp_code.txt -lstdc++ ekstensi bisa berupa apa saja, atau bahkan tidak sama sekali

secara default hasilnya (setelah kompilasi berhasil) adalah a.outfile yang dapat dijalankan dengan./a.out


sumber
Jawaban Anda lebih informatif
Billal Begueradj