유닉스 콘솔 / 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.