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.