Co to jest polecenie do kompilowania i uruchamiania programów w C ++?


Odpowiedzi:


108

Aby skompilować kod c ++, użyj:

g++ foo.cpp

foo.cpp w tym przykładzie jest nazwą kompilowanego programu.

Spowoduje to utworzenie pliku wykonywalnego w tym samym katalogu o nazwie, a.outktóry można uruchomić, wpisując to w swoim terminalu:

./a.out

g ++ powinien już znajdować się w $ PATH, więc nie musisz dzwonić /usr/bin/g++jawnie, ale możesz użyć tego drugiego w każdym przypadku.

foo.cpppowinien znajdować się w tym samym katalogu, z którego uruchomiono polecenie. W razie wątpliwości możesz upewnić się, że znajdujesz się w tym samym katalogu, wpisując ls foo.cpplub head foo.cpp(jeśli musisz sprawdzić, czy pracujesz z poprawnym foo.)

Jak zauważył @ con-f-use, kompilator zwykle sprawia, że ​​ten plik jest wykonywalny, ale jeśli nie, możesz to zrobić sam (więc polecenie wykonania ./a.outlub równoważne, będzie działać):

chmod +x ./a.out

Aby określić nazwę skompilowanego pliku wyjściowego, tak aby nie był nazwany a.out, użyj -opolecenia g ++.

Na przykład

g++ -o output foo.cpp

Spowoduje to kompilację foo.cppdo podanego pliku binarnego outputi możesz wpisać, ./outputaby uruchomić skompilowany kod.


6
Kompilator zwykle sprawia, że ​​plik binarny ( a.outw tym przypadku) jest wykonywalny. Jeśli nie możesz to zrobić wpisując: chmod +x a.out. Gdy skompilowany program jest wykonywalny, możesz go uruchomić, wpisując ./a.out- kropka i ukośnik, że chcesz go uruchomić.
con-f-use

@Rajeshkumar, czy znalazłeś jedną z tych odpowiedzi na swoje upodobania? Jeśli tak, czy mógłbyś zaznaczyć jedną z nich jako zaakceptowaną odpowiedź (poprzez zaznaczenie pod strzałkami głosowania w górę / w dół), abyśmy mogli narysować linię poniżej tego problemu.

Czy istnieje różnica między wyjściem g ++ foo.c -o a wyjściem g ++ -o foo.c?
Goldname

21

Przyjmuję tutaj dwa założenia:

  1. Masz już plik / program źródłowy C ++ gotowy do kompilacji
  2. Masz skonfigurowany system kompilacji na swoim komputerze

Najprostszym sposobem na kompilację programu C ++ na Ubuntu lub innej dystrybucji Linuksa jest napisanie

g++ main.cpp -o main
  • g ++ to wywołanie komponentu C ++ GCC , kompilatora defacto dla C / C ++ i całego szeregu innych języków na platformie Linux. Jest to obecnie jedyny kompilator zdolny do kompilacji jądra Linux.
  • main.cpp to plik źródłowy c ++, który chcesz skompilować.
  • -o main określa nazwę pliku wyjściowego, który chcesz utworzyć po skompilowaniu źródła. Docelowy plik źródłowy i docelowy plik wyjściowy można odwrócić, jeśli chcesz, więc g++ -o main main.cppjest równie poprawny.
  • Aby następnie uruchomić ten program, musisz zrobić ./main w terminalu.

Powyższe polecenia zakładają, że jesteś już w lokalizacji plików źródłowych, ale zarówno plik źródłowy, jak i docelowy plik wyjściowy można również określić jako katalog. Na przykład

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

skompiluje plik źródłowy C ++ znajdujący się na pulpicie i umieści wykonywalny plik binarny w Projectsfolderze w katalogu domowym. Aby uruchomić ten plik wykonywalny, uruchom ./Projects/main.


5

Tak lubię kompilować z 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

Podoba mi się twoja odpowiedź. Daje dodatkowe sugestie. Ale powinieneś naprawdę przeformułować to, aby było ogólnie akceptowalne.
LinuxSecurityFreak

1

Potrzebujesz g ++, ponieważ gcc może nie skompilować pliku cpp łatwo.
Musisz także nauczyć się vima lub emacsa, aby pisać kod C.
Po prostu spróbuj tego na swoim terminalu:

Wpisz program testowy i zapisz go:

$vim hello.cc

Kompiluj hello.ccz g ++:

$g++ hello.cc -o hello

Wykonaj to:

$./hello

Tutaj ./oznacza, że ​​plik exe znajduje się w bieżącym katalogu.


3
gcc jest kompilatorem GNU dla kompilatora C i C ++. I OP niekoniecznie musi znać vim lub emacs, aby napisać kod C. Jest wiele innych edytorów tekstu i IDE się unosi.
Nitin Venkatesh

3
chociaż uwielbiam vima, jeśli ktoś już ma problemy ze znalezieniem sposobu na rozwiązanie problemu, sugerowanie, że vim nie jest zbyt przydatne.
johanvdw

Ja osobiście nie lubię vi, ale to nie ma znaczenia. Powinieneś odejść od sugerowania konkretnego edytora, każdy i tak używa własnego.
LinuxSecurityFreak,

0

g++jest nakładką na gcc(GNU Compiler Collection) z niektórymi predefiniowanymi makrami c ++ i różnymi domyślnymi opcjami / flagami.

kompilowanie kodu c ++ gccjest przydatne, gdy g++nie jest dostępne z wielu powodów, w rzeczywistości jest to tylko kwestia połączenia z biblioteką c ++ -lstdc++i poinformowania gcc, aby traktował dane wejściowe jako kod c ++ (albo przez użycie .Crozszerzenia, albo narzucenie języka za pomocą -x)
innych ważnych przyrostków nazw plików c ++: .cc, .cp, .cxx, .cpp, .CPP,.c++

przykład:

gcc cpp_code.C -lstdc++ rozszerzenie wielkie litery ( .C) jest ważne, aby gcc wiedział, że jest to plik c ++.

lub jawnie określając język wprowadzania:

gcc -x c++ cpp_code.txt -lstdc++ rozszerzenie może być czymkolwiek, a nawet niczym

domyślnie wynikiem (po udanej kompilacji) jest a.outplik, który można uruchomić./a.out


Twoja odpowiedź jest bardziej informacyjna
Billal Begueradj
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.