유닉스 콘솔 / Mac 터미널에서 C / C ++를 컴파일하고 실행하는 방법은 무엇입니까?


143

유닉스 콘솔이나 Mac 터미널에서 C 또는 C ++를 어떻게 컴파일 / 실행할 수 있습니까?

(알고 잊어 버렸다가 다시 배우십시오. 적어 두십시오.)

답변:


188

간단한 단일 소스 프로그램 인 경우 :

make foo

소스 파일은 foo.c 또는 foo.cpp 등입니다.

심지어 makefile이 필요하지 않습니다. Make에는 소스 파일을 확장명을 빼고 같은 이름의 실행 파일로 빌드하기에 충분한 기본 제공 규칙이 있습니다.

방금 빌드 한 실행 파일을 실행하는 것은 모든 프로그램을 실행하는 것과 동일하지만 셸은 $PATH실행 파일을 찾기 위해 찾은 내용 만 검색 하고 현재 디렉토리를 포함하지 않는 파일 만 검색하므로 실행 파일 경로를 지정해야합니다 ( .).

그래서 내장 된 실행 파일을 실행합니다 foo:

./foo

make를 호출 할 때 지정된 대상에 전파 된 기본 규칙을 인식하지 못했습니다. 오늘 새로운 것을 배웠습니다 =)
Branan

"-bash : make : command not found"<-개발자 도구와 추가 구성 요소를 다운로드해야합니다.
dgig

17
그것은 아니다 make main.cpp,하지만 make main.
Craig McMahon

@CraigMcMahon 입력 해 주셔서 감사합니다!
Hlawuleka MAS

새로운 것을 배웠습니다. 대단합니다!
FossilizedCarlos

112
gcc main.cpp -o main.out  
./main.out

31
멍청한 놈으로서 나는 실행할 때 "./"를 포함하지 않은 것에 대해 너무 슬퍼했다
funk-shun

2
@ funk-shun 나는 당신의 의견이 이런 종류의 인터넷 검색을 할 때 최고의 결과가 되었기를 바랍니다.
Cory W.

10
"gcc main.cpp -o main.out"을 사용하여 x86_64 아키텍처에 대해 정의되지 않은 기호 : "std :: __ 1 :: locale :: use_facet (std :: __ 1 :: locale :: id &) const"라는 오류가 발생했습니다. , ... 이유는 gcc default-links는 libc입니다. g ++을 사용하면 libstdc ++와 연결됩니다. 따라서 "g ++ main.cpp -o main.out"을 사용하는 것이 좋습니다.
Rachel

1
@Rachel 나도 같은 문제가 발생했습니다.
Goldname

1
Undefined symbols for architecture x86_64 문제에 관해서 는 다음과 같이 명령을 수정하고 gcc -lstdc++ main.cpp -o main.out내 Mac에서 작동합니다. 링크를 통해 : stackoverflow.com/questions/11852568/…
rotoava

69

이것은 모든 유닉스 컴퓨터에서 작동하는 명령입니다 ... Linux / Ubuntu에서는 사용하지만 OS X에서도 작동합니다. Terminal.app에 다음 명령을 입력하십시오 .

$ g++ -o lab21 iterative.cpp

-o 0이 아닌 문자 O

lab21 실행 파일이 될 것입니다

iterative.cpp 당신의 C ++ 파일입니까

해당 명령을 실행 한 후 터미널에서 다음을 입력하여 프로그램을 실행하십시오.

$ ./lab21

1
이것이 나를 위해 일한 것입니다. 운없이 위의 다른 솔루션을 시도했습니다. 감사!
nmrichards

나뿐만 아니라 아무것도 설치할 필요가 없으며 완벽한 솔루션입니다.
Chander Shakher Ghorela-전문가

33

나를위한 두 단계 :

먼저:

make foo

그때:

./foo

1
./foo어떻게 대답이 받아 들여
지는가에

@Suhaib 원래의 질문으로 요청하지 않았기 때문에 제 대답에는 그러한 명령이 없었습니다. 제목은 "유닉스 콘솔 / Mac 터미널에서 C / C ++를 실행하는 방법"이라는 제목으로 "c / c ++ 컴파일러를 실행하는 방법"으로 해석됩니다. 제목은 "컴파일 및 실행"으로 변경되었습니다. 변경된 질문을 반영하여 답변을 업데이트했습니다.
camh

15

Unix (Linux, Mac OS X, AIX 등) 환경에서의 모든 응용 프로그램 실행은 실행 가능한 검색 경로에 따라 다릅니다.

다음 명령을 사용하여 터미널에이 경로를 표시 할 수 있습니다.

에코 $ PATH

Mac OS X (기본적으로)에는 다음과 같이 콜론으로 구분 된 검색 경로가 표시됩니다.

/ usr / bin : / bin : / usr / sbin : / sbin : / usr / local / bin : / usr / X11 / bin

따라서 나열된 디렉토리의 모든 실행 파일은 이름을 입력하여 실행할 수 있습니다. 예를 들면 다음과 같습니다.

고양이 mytextfile.txt

/bin/catmytextfile.txt가 실행 되고 터미널에 표시됩니다.

실행 파일 검색 경로에없는 다른 명령을 실행하려면 실행 파일의 경로를 규정해야합니다. Mac OS XI의 홈 디렉토리에 MyProgram이라는 실행 파일이 있다고 가정하면 다음과 같이 완벽하게 규정 할 수 있습니다.

/ 사용자 / oliver / MyProgram

실행하려는 프로그램과 가까운 위치에 있으면 이름을 부분 경로로 한정 할 수 있습니다. 예를 들어, MyProgram디렉토리 /Users/oliver/MyProjectI에 있고 홈 디렉토리에있는 경우 다음과 같이 실행 파일 이름을 규정하고 실행할 수 있습니다.

MyProject / MyProgram

또는 디렉토리에 /Users/oliver/MyProject2있고 실행하기를 원한다고 말하면 다음 /Users/oliver/MyProject/MyProgram과 같은 상대 경로를 사용하여 실행할 수 있습니다.

../MyProject/MyProgram

마찬가지로 MyProgram"현재 디렉토리"상대 경로를 사용해야하는 것과 동일한 디렉토리에있는 경우 . 현재 디렉토리는 마침표 뒤에 슬래시가 있습니다. 예를 들면 다음과 같습니다.

./MyProgram

현재 사용중인 디렉토리를 판별하려면 pwd명령 을 사용하십시오 .

일반적으로 이름을 한정하지 않고 실행하려는 하드 디스크의 한 곳에 프로그램을 넣는 경우. 예를 들어, 다른 프로그램의 정기적으로 사용되는 쉘 스크립트에 대해 홈 디렉토리에 "bin"디렉토리가있는 경우 실행 가능 검색 경로를 변경하는 것이 좋습니다.

.bash_profile홈 디렉토리에서 기존 파일을 작성 또는 편집 하고 행을 추가하여 쉽게 수행 할 수 있습니다 .

#!/bin/sh
export PATH=$PATH:~/bin

여기서 물결표 (~) 문자는 / Users / oliver의 바로 가기로 사용됩니다. 또한 해시 뱅 (#!) 행은 파일의 첫 번째 행이어야합니다 (없는 경우). 이 기술을 사용하려면 로그인 쉘이 bash (Mac OS X 및 대부분의 Linux 배포판의 기본값) 여야합니다. 또한 프로그램이 설치된 ~/bin시스템 실행 파일에 우선하여 사용되도록하려면 다음과 같이 내보내기 문을 다시 정렬해야합니다.

export PATH=~/bin:$PATH

보안에 대한 내 답변에 'onebyone.livejournal.com'의 의견을 추가하면이 답변이 완료됩니다. 감사합니다.
PA

10

Ryan, 나는 이것이 너무 짧아서 주석 대신 답변으로 변경하고 있습니다. "터미널"에서이 모든 작업을 수행하십시오.

G ++ 컴파일러를 사용하려면 다음을 수행해야합니다.

  1. * .cpp 파일을 저장 한 디렉토리로 이동하십시오.

    cd ~/programs/myprograms/
    (~는 집의 바로 가기입니다 (예 : / Users / Ryan / programs / myprograms /), 실제로 사용한 위치로 바꿉니다.)

  2. 그것을 컴파일

    g++ input.cpp -o output.bin (output.bin은 확장명을 가진 모든 것이 될 수 있습니다. 실제로 bin은 유닉스에서 일반적입니다.)

    거기가 성공하면 아무것도 반환하지 않습니다, 그리고 즉해야 좋아 . 일반적으로 실패시 반품을받습니다.

    그러나를 입력 ls하면 동일한 디렉토리에 파일 목록이 표시됩니다. 예를 들어 다른 폴더 인 input.cpp 및 output.bin이 표시됩니다.

  3. 디렉토리 내부에서 이제 ./outbut.bin


고마워요. 이러한 것들을 설명하는 튜토리얼을 알고 싶으십니까? 정확히 G ++이 의미하는 것과 마찬가지로 'o'스위치는 무엇이며 다른 것은 무엇입니까?
Ryan

makemakefile이 없기 때문에 작동하지 않습니다 에 대한 의견을 추가하십시오 .

Ryan, 터미널에 "man g ++"를 입력하여 "man pages"(즉, Apple에 내장 된 것으로 생각되는 매뉴얼)를 얻을 수 있습니다. 그래도 훌륭한 자습서를 보지 못했습니다. 비록 g ++의 맨 페이지는 CFLAGS와 모든 종류의 고급 컴파일 옵션을 사용하면 상당히 심화 될 수 있습니다.
nerdwaller 2016

Nitpick : "성공한 경우에는 아무것도 인쇄되지 않아야합니다. 일반적으로 실패하면 [출력]을 얻습니다." 성공시 0, 실패시 0이 아닌 리턴 값이 항상 있습니다.
sepp2k

병합 stackoverflow.com/questions/13714436/... (이에 대한 몇 가지 기본 지침을 통합하려고)
Shog9

9

이를 수행하는 간단한 방법은 다음과 같습니다.

make foo && ./$_

하나의 라이너를 사용하면 실행 파일을 쉽게 다시 실행할 수 있습니다.


8

현재 디렉토리가 경로에 없다고 가정하면 구문은 ./[name of the program]입니다.

예를 들어 ./a.out


2
잘 됐네요! 많은 시스템에서 현재 디렉토리 (UNIX 용어로 ".")가 쉘에서 검색 한 경로의 일부가 아니기 때문에 점과 슬래시가 있습니다. 따라서 추가하면 실행하려는 프로그램을 명시 적으로 만듭니다.
언 와인드

7

최상의 경고를 받으려면 다음을 추가하십시오. 후회하지 않습니다. 가능하면 WISE를 컴파일하십시오 (경고는 오류입니다)

- Wall -pedantic -Weffc++ -Werror

실제로 기본값이어야합니다.
Konrad Rudolph

6

C 또는 C ++ 프로그램을 컴파일하려면 공통 명령이 있습니다.

  1. make filename

  2. ./filename

make는 소스 파일을 동일한 이름의 실행 파일로 빌드합니다. 그러나 표준 방법을 사용하려면 gcc 컴파일러를 사용하여 C 프로그램 및 c ++ 용 g ++ 빌드

C의 경우 :

gcc filename.c

./a.out

C ++의 경우 :

g++ filename.cpp

./a.out

2

를 사용하십시오 makefile. 매우 작은 (= 한 파일) 프로젝트의 경우에도 여러 가지 컴파일러 설정 세트를 사용하여 테스트 할 수 있기 때문에 노력할 가치가 있습니다. 이 방식으로 디버깅 및 배포가 훨씬 쉬워집니다.

make매뉴얼을 읽으십시오. 언뜻보기에는 꽤 길어 보이지만 대부분의 섹션은 그냥 넘어갈 수 있습니다. 대체로 몇 시간이 걸렸고 훨씬 생산성이 높아졌습니다.


고맙습니다. 좋은 답변이기도합니다. 나는 가능한 한 으스스한 make를 사용하려고 노력하기 때문에 "쉬운"방식의 구문을 잊어 버린 이유이기도합니다.
PA


2

c / cpp 파일이있는 디렉토리에 입력하십시오.

c 코드 컴파일 및 실행

$gcc filename.c
$./a.out filename.c

C ++ 코드 컴파일 및 실행

$g++ filename.cpp
$./a.out filename.cpp

"$"는 기본 mac 터미널 기호입니다.


2

Mac 터미널에서 cpp 소스 코드를 컴파일하고 실행하려면 다음을 수행해야합니다.

  1. cpp 파일의 경로가 somePath / fileName.cpp 인 경우 먼저 경로 somePath를 사용하여 디렉토리로 이동하십시오.
  2. fileName.cpp를 컴파일하려면 c ++ fileName.cpp -o fileName을 입력하십시오.
  3. 프로그램을 실행하려면 ./fileName을 입력하십시오.

0

터미널을 사용하여 .C 파일을 실행하는 것은 2 단계 프로세스입니다. 첫 번째 단계는 터미널에 gcc를 입력하고 .C 파일을 터미널에 놓은 후 다음을 누릅니다 Enter.

username$ gcc /Desktop/test.c 

두 번째 단계에서 다음 명령을 실행하십시오.

username$ ~/a.out

0

c ++ 파일을 실행하려면 아래 명령을 실행하십시오. 파일 이름이 "main.cpp"라고 가정하십시오.

1. C ++ 파일에서 오브젝트 파일을 작성하도록 컴파일하십시오.

g++ -c main.cpp -o main.o

2. #include <conio.h>MacOS에서는 지원하지 않으므로 Mac에서 지원하는 대체 방법을 사용해야합니다 #include <curses.h>. 이제 객체 파일을 실행 파일로 변환해야합니다. 사용하려면 curses.hlibrary를 사용해야합니다 -lcurses.

g++ -o main main.o -lcurses

3. 이제 실행 파일을 실행하십시오.

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