C ++ 프로그램을 컴파일하고 실행하는 명령은 무엇입니까?


답변:


108

C ++ 코드를 컴파일하려면 다음을 사용하십시오.

g++ foo.cpp

예제의 foo.cpp 는 컴파일 할 프로그램의 이름입니다.

a.out터미널에 다음을 입력하여 실행할 수 있는 동일한 디렉토리에 실행 파일이 생성 됩니다.

./a.out

g ++ 는 이미 $ PATH에 있어야하므로 /usr/bin/g++명시 적으로 호출 할 필요는 없지만 어떤 경우에도 후자를 사용할 수 있습니다.

foo.cpp명령을 실행하는 디렉토리와 같은 디렉토리에 있어야합니다. 의심의 여지가 있다면, 당신은 당신이 입력하여 동일한 디렉토리에 있는지 확인 할 수 있습니다 ls foo.cpp또는 head foo.cpp(당신은 당신이 올바른 작업하고 확인해야하는 경우 foo.)

@ con-f-use가 지적했듯이 컴파일러는 일반적 으로이 파일을 실행 가능하게 만들지 만 그렇지 않은 경우 직접 수행 할 수 있습니다 (따라서 실행 명령 ./a.out또는 이와 동등한 명령 이 작동 함).

chmod +x ./a.out

컴파일 된 출력 파일의 이름을 지정하여 이름이 지정되지 않도록 a.out하려면 -og ++ 명령과 함께 사용 하십시오.

예 :

g++ -o output foo.cpp

foo.cpp파일은 이진 파일로 컴파일되며 컴파일 된 코드를 실행하도록 output입력 할 수 있습니다 ./output.


6
컴파일러는 보통 바이너리 ( a.out이 경우)를 실행 가능하게 만듭니다. 그렇지 않은 경우 다음을 입력하여 수행 할 수 있습니다 chmod +x a.out.. 컴파일 된 프로그램이 실행 가능하면 실행 ./a.out하려는 점과 슬래시 표시를 입력 하여 실행할 수 있습니다.
con-f-use

@Rajeshkumar, 당신은 당신의 취향에 대한 답변 중 하나를 찾았습니까? 그렇다면 위 / 아래 투표 화살표 아래에 눈금을 선택하여 해당 답변 중 하나를 허용 된 답변으로 표시하여이 문제 아래에 선을 그릴 수 있습니다.

g ++ foo.c -o output과 g ++ -o output foo.c 사이에 차이점이 있습니까?
Goldname

21

나는 여기에 두 가지 가정을하고 있습니다 :

  1. 이미 C ++ 소스 파일 / 프로그램을 빌드 할 준비가되었습니다.
  2. 컴퓨터에서 빌드 시스템을 설정했습니다

우분투 또는 그 문제에 대한 다른 Linux 배포판에서 C ++ 프로그램을 컴파일하는 가장 간단한 방법은 다음을 입력하는 것입니다.

g++ main.cpp -o main
  • g ++ 는 Linux 플랫폼에서 C / C ++ 용 사실상 컴파일러 및 다른 언어의 전체 호스트 인 GCC 의 C ++ 구성 요소를 호출 합니다. 현재 Linux 커널을 컴파일 할 수있는 유일한 컴파일러입니다.
  • main.cpp 는 컴파일하려는 C ++ 소스 파일입니다.
  • -o main 은 소스가 컴파일 된 후 작성하려는 출력 파일의 이름을 지정합니다. 원하는 경우 대상 소스 파일과 대상 출력 파일을 반전시킬 수 있으므로 g++ -o main main.cpp동일하게 유효합니다.
  • 그런 다음 해당 프로그램을 실행하려면 터미널에서 ./main을 수행해야합니다.

위의 명령은 사용자가 이미 소스 파일의 위치에 있다고 가정하지만 소스 파일과 대상 출력 파일 모두 디렉토리로 지정 될 수 있습니다. 예를 들어

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

데스크탑에 위치한 C ++ 소스 파일을 컴파일하고 실행 가능한 바이너리를 Projects홈 디렉토리 의 폴더에 넣습니다. 이 실행 파일을 실행하려면을 실행하십시오 ./Projects/main.


5

이것이 내가 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.
한스

나는 당신의 대답을 좋아합니다. 추가 제안이 있습니다. 그러나 일반적으로 수용 가능하도록 다시 문구를 다시 작성해야합니다.
LinuxSecurityFreak

1

gcc는 cpp 파일을 쉽게 컴파일하지 못할 수 있으므로 g ++이 필요합니다.
C 코드를 작성하려면 vim 또는 emacs를 학습해야합니다.
터미널에서 이것을 시도하십시오.

테스트 프로그램을 입력하고 저장하십시오.

$vim hello.cc

hello.ccg ++로 컴파일 :

$g++ hello.cc -o hello

그것을 실행하십시오 :

$./hello

여기서 ./exe 파일이 현재 디렉토리 아래에 있음을 의미합니다.


3
gcc는 C 및 C ++ 컴파일러 용 GNU 컴파일러입니다. 그리고 OP는 C 코드를 작성하기 위해 vim이나 emacs를 알아야 할 필요는 없습니다. 다른 텍스트 편집기와 IDE가 많이 있습니다.
Nitin Venkatesh

3
vim을 좋아하지만 누군가가 문제를 해결하는 방법을 찾기 위해 이미 어려움을 겪고 있다면 vim을 제안하는 것은 그리 유용하지 않습니다.
johanvdw

나는 개인적으로 좋아하지 vi않지만 중요하지 않습니다. 당신은 특정 편집자를 제안하지 말아야합니다.
LinuxSecurityFreak

0

g++gcc일부 사전 정의 된 C ++ 매크로와 다른 기본 옵션 / 플래그 가있는 프론트 엔드 (GNU 컴파일러 모음)입니다.

여러 가지 이유로 사용할 수없는 gcc경우 C ++ 코드를 컴파일하는 것이 편리합니다 g++. 실제로 C ++ 라이브러리에 연결하고 -lstdc++gcc에게 입력을 c ++ 코드로 처리하도록 지시하는 것입니다 ( .C확장자 를 사용 하거나 언어를 사용하여 -x)
다른 유효한의 C ++ 파일 이름 접미사 : .cc, .cp, .cxx, .cpp, .CPP,.c++

예 :

gcc cpp_code.C -lstdc++ 대문자 확장명 ( .C)은 gcc가 c ++ 파일임을 아는 데 중요합니다.

또는 입력 언어를 명시 적으로 지정하십시오.

gcc -x c++ cpp_code.txt -lstdc++ 확장은 무엇이든 또는 아무것도 될 수 없습니다.

기본적으로 결과 (성공적인 컴파일 후)는 a.out다음과 함께 실행할 수 있는 파일입니다../a.out


귀하의 답변이보다 유익합니다
Billal Begueradj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.