g ++ 사용 요약

이전에 어디서 읽었는지 기억이 나지 않는 기사인데 지금은 찾을 수 없는데 참고 용 기록 일뿐입니다.

gcc는 Linux / Windows 플랫폼에서 사용할 수있는 크로스 플랫폼 C / C ++ 컴파일러입니다. 매우 강력한 기능과 유연한 구조를 가지고 있습니다. Java 및 Fortran과 같은 다양한 프런트 엔드 모듈을 통해 다양한 언어를 지원할 수 있습니다., Pascal, Modula-3 및 Ada 컴파일. nginx, libevent 등과 같은 많은 유명한 프로젝트와 라이브러리가 gcc로 컴파일됩니다.
g ++는 명령 줄에서 사용하거나 IDE의 컴파일 환경을 구성하여 시스템에서 구성한 g ++ 환경을 호출 할 수 있으며 필요에 따라 직접 구성 할 수 있습니다. 다음은 g ++ 컴파일러를 사용하는 일부 블로거의 경험과 요약입니다.

1. g ++ 컴파일 과정

g ++, 소스 코드 컴파일에서 실행될 때 다음 네 단계를 수행합니다.
(1) 전처리 : 헤더 파일 처리,
형식을 사용하여 파일 접미사 .i (사용) 생성으로 구성된 소스 프로그램의 매크로 정의 :

g++ -E hello.cpp -o hello.i

hello.cpp는 컴파일 할 소스 파일이고 -o 옵션은 출력 파일의 이름을 지정합니다. 여기에서 -E 옵션을 사용하여 hello.i 파일을 컴파일하고 생성합니다.
(2) 어셈블리 파일로 변환 : -S 옵션을 사용하여 전처리 된 .i 파일을 대상 시스템의 어셈블리 코드 .S 파일로 변환합니다.
체재:

g++ -S hello.i  -o  hello.s

이 매개 변수를 사용하여 .i 파일을 컴파일하여 .s 파일을 생성하고 출력 파일 이름도 -o 옵션으로 지정합니다.
(3) 어셈블러 파일-> 객체 파일, 즉 기계어 코드로 변환 : -c 옵션
사용 형식 사용 :

g++ -c hello.s -o hello.o

(4) 링크 : -o 매개 변수를 사용하여 이전 단계에서 생성 된 대상 파일을 실행 파일로 링크합니다
. 형식 :

g++ hello.o  -o  hello
 以上过程是g++工具编译cpp源程序的具体过程,在实际使用时我们可以不用按照流程一步步编译,可以一步到位将源程序编译为可执行文件,只需要使用如下命令:
g++  hello.cpp -o  hello

2. 일반적으로 사용되는 g ++ 컴파일 옵션

 在使用g++工具进行编译时,我们可以附加一些编译选项让编译更加智能,从而方便我们查看编译错误和警告。g++提供了许多有用的编译选项,下面总结一些常用选项:
  • o FILE : 출력 파일 이름을 지정합니다. 대상 코드로 컴파일 할 때는이 옵션이 필요하지 않습니다. FILE이 지정되지 않은 경우 기본 파일 이름은 a.out입니다.
  • c : 링크가 아닌 개체 파일 만 컴파일 및 생성
  • m486 : 486 용 코드 최적화
  • Wall : gcc가 제공 할 수있는 모든 유용한 경고를 허용하고 -W (경고)를
    사용 하여 특정 경고를 표시 할 수도 있습니다. 형식 사용 :
g++ -Wall hello.cpp -o hello
  • Werror : 경고가 발생할 때 컴파일 프로세스를 중단하기 위해 모든 경고를 오류로 변환합니다.
  • v : 컴파일 프로세스의 각 단계에서 사용되는 명령을 표시합니다.
  • static : 정적 라이브러리를 연결합니다. 즉, 정적 연결을 수행합니다. g ++는 기본적으로 동적 라이브러리를 연결합니다. 정적 라이브러리를 연결해야하는 경우이 옵션을 사용하여 지정해야합니다.
  • g : 실행 프로그램에 표준 디버깅 정보를 포함합니다.이 옵션을 사용하여 생성 된 실행 파일은 gdb 도구로 디버깅 할 수 있습니다.
  • w : 모든 경고를 끄십시오.이 옵션을 사용하지 않는 것이 좋습니다.
  • shared : 공유 객체 파일을 생성합니다. 일반적으로 공유 라이브러리를 만들 때 사용됩니다.
  • On : 최적화 옵션입니다. 컴파일 타임에이 옵션을 지정하면 컴파일러는 n 값 (n은 0과 3 사이)에 따라 다양한 수준으로 코드를 최적화합니다. 여기서 -O0은 최적화가 없음을 의미하고 n 값이 클수록 최적화 수준이 높아집니다.
  • L : 라이브러리 파일 종속성 옵션.이 옵션은 컴파일 된 소스 프로그램이 의존하는 라이브러리 파일 경로를 지정하는 데 사용됩니다. 라이브러리 파일은 정적 링크 라이브러리 또는 동적 링크 라이브러리 일 수 있습니다. Linux 시스템의 기본 라이브러리 경로는 /입니다. usr / lib. 필요한 라이브러리 파일이이 경로에 없으면 -L을 사용하여
g++  foo.cpp  -L/home/lib  -lfoo  -o   foo
  • I :이 옵션은 프로그램을 컴파일 할 때 프로그램이 의존하는 헤더 파일 경로를 지정하는 데 사용됩니다. Linux 플랫폼의 기본 헤더 파일 경로는 / usr / include 아래에 있습니다.이 디렉토리에 없으면 다음을 사용해야합니다. 컴파일시 헤더 파일
    gcc foo 의 경로를 지정하는이 옵션 . cpp -I / home / include -o foo

3. 동적 라이브러리 컴파일

g ++는 소스 프로그램을 컴파일하여 실행 파일을 생성하는 것 외에도 동적 링크 라이브러리를 컴파일 할 수 있습니다. 방법은 다음과 같습니다.
(1) 단계별 완료

gcc -fPIC -c func.cpp -o func.o 
gcc -shared -o libfunc.so func.o

(2) 한 단계로 완료

gcc -fPIC -shared -o libfunc.so func.cpp

4. make 일본 Makefile

명령 줄에서 g ++ 도구를 사용하는 방법은 위에서 소개되었으며 명령 줄에서 g ++를 사용하여 단일 또는 여러 소스 프로그램 파일을 컴파일 할 수 있습니다. 하지만 동시에 많은 파일을 컴파일해야하는 상황이 발생하면 g ++ 명령 줄 컴파일이 너무 번거롭기 때문에 컴파일을 자동화하려면 make를 사용해야합니다. make 도구 -Makefile의 규칙 파일을 작성하고이 파일에 몇 가지 컴파일 규칙을 정의한 다음 make 도구를 사용하여 배치 컴파일을 위해 g ++를 자동으로 호출하여 효율성을 크게 향상시킬 수 있습니다. 관심이있는 학생들은 스스로 make의 사용법을 찾을 수 있으며 여기서 확장하지는 않겠습니다.
참조 자료 :
1.https :
//blog.csdn.net/kwame211/article/details/84560400 2.https : //blog.csdn.net/drdairen/article/details/53740092

추천

출처blog.csdn.net/qq_24649627/article/details/110000320