gcc 예제

디버거는 gdb입니다. 다음은 gcc/gdb 세션의 일반적인 예입니다: 옵션 -l을 사용하여 공유 라이브러리와 연결할 수 있습니다. 예를 들어 – 저장 -temps 옵션은 위의 예제 4,5 및 6에서 수행된 모든 작업을 수행할 수 있습니다. 이 옵션을 통해 컴파일의 모든 단계에서 출력은 현재 디렉터리에 저장됩니다. 이 옵션은 실행 도 생성합니다. 최종 단순화로:의 왼쪽과 오른쪽인 특수 매크로 $@ 및 $^를 사용하여 전체 컴파일 규칙을 보다 일반화해 보겠습니다. 아래 예제에서는 모든 포함 된 파일매크로 DEPS의 일부로 나열 되어야 하며 모든 개체 파일은 매크로 OBJ의 일부로 나열 되어야 합니다. 그러나 포함 파일에 대한 종속성이라는 한 가지 누락된 점이 있습니다. 예를 들어 hellomake.h로 변경하는 경우 .c 파일을 다시 컴파일하지 않습니다. 이 문제를 해결하려면 모든 .c 파일이 특정 .h 파일에 종속되도록 해야 합니다. 우리는 간단한 규칙을 작성하고 makefile에 추가하여이 작업을 수행 할 수 있습니다. 예를 들어 다음 명령은 소스 파일 Cfile.c에서 공유 라이브러리 libCfile.so 만듭니다. 이것은 우리가 위의 (12)에서 논의 한 것과 는 반대입니다.

이 플래그를 사용하면 char 변수가 서명된 것으로 처리됩니다. 위의 코드를 컴파일하면 정의되지 않은 변수 c와 관련된 경고가 생성되어야하며 -Werror 옵션을 사용하여 오류로 변환됩니다. 훌륭한 컬렉션! 다른 두 가지 매우 중요 한 옵션은 -I/path/to/headers 이 옵션은 헤더 파일을 찾는 경로를 추가합니다. 예를 들어 $ gcc -I / 홈 / 코드 맨 / 입력 file.c포함 (연결없이) 컴파일 된 코드만 생성하려면 -C 옵션을 사용합니다. 일반적인 주요 프로그램, 별도의 파일의 일부 기능 코드 및 포함 파일을 나타내는 hellomake.c, hellofunc.c 및 hellomake.h의 세 파일부터 시작해 보겠습니다. 따라서 옵션 -fPIC가 공유 라이브러리를 만드는 데 사용되었다는 것을 알 수 있습니다. gcc 명령은 stdout에서 출력을 생성하므로 모든 파일에서 출력을 리디렉션할 수 있습니다. 위의 경우 file main.i에는 처리된 전처리 된 출력이 포함됩니다. 이 옵션 -v는 소스 파일을 컴파일하는 동안 gcc가 취하는 모든 단계에 대한 자세한 정보를 제공하는 데 사용할 수 있습니다.

이 규칙을 Makefile 또는 makefile이라는 파일에 넣은 다음 명령 줄에 makefile을 입력하면 makefile에 작성한 대로 컴파일 명령을 실행합니다. 인수없이 확인은 파일의 첫 번째 규칙을 실행합니다. 또한 명령이 다음 의 첫 번째 줄에 의존하는 파일 목록을 배치하여 해당 파일중 어느 것이라도 변경되면 hellomake 규칙을 실행해야 한다는 것을 알고 있어야 합니다. 즉시 #1 문제를 해결하고 마지막 컴파일 명령을 찾고 위로 화살표를 반복적으로 사용하지 않도록 할 수 있습니다. 그러나 시스템은 여전히 최신 변경 사항만 컴파일하는 측면에서 효율적이지 않습니다. 위의 명령은 컴퓨터 수준 코드 또는 컴파일된 코드를 포함하는 file main.o를 생성합니다. 다음 기본 C 코드 (main.c) 이 문서에서 사용 됩니다:[mcb@hdd-c12 C_prac]$ gcc -v 기본 제공 사양을 사용 하 여. 대상: i686-pc-linux-gnu 구성: /usr/소프트웨어/src/gcc-4.1.1/configure –접두사=/usr/소프트웨어-프로그램-접미사=-4.1.1 스레드 모델: posix gcc 버전 4.1.1 [mcb@hdd-c12 C_prac]$ 위의 명령은 주 출력 파일을 생성합니다. gcc 옵션은 파일을 통해 제공 될 수도 있습니다.

이 작업은 @ 옵션 다음에 옵션을 포함하는 파일 이름을 사용하여 수행할 수 있습니다.