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.