>  기사  >  운영 및 유지보수  >  Linux에서 s 파일을 생성하는 프로세스를 무엇이라고 합니까?

Linux에서 s 파일을 생성하는 프로세스를 무엇이라고 합니까?

青灯夜游
青灯夜游원래의
2022-06-17 11:46:253926검색

Linux에서 s 파일을 생성하는 과정을 "컴파일"이라고 합니다. Linux의 컴파일러 gcc는 전처리된 ".i" 파일에 대해 구문 분석, 의미 분석 및 최적화를 수행하여 어셈블리 코드 파일(".s" 파일)을 생성합니다. 실행 구문은 "gcc -S filename.i - o 파일입니다. name.s"; 그런 다음 어셈블러는 어셈블리 코드 파일을 중간 개체 파일로 변환합니다. 마지막으로 링커 ld는 개체 파일을 필요한 정적 링크 라이브러리 및 동적 링크 라이브러리와 연결하여 실행 파일이 됩니다.

Linux에서 s 파일을 생성하는 프로세스를 무엇이라고 합니까?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

Linux에서 C 파일을 실행 파일로 컴파일하는 과정

gcc를 사용하여 C 파일을 실행 파일로 컴파일하는 과정은 사전 컴파일, 컴파일, 어셈블리, 링크의 네 단계로 나눌 수 있습니다.

1. 프리컴파일(.i 파일 생성) .i文件)

预编译器cpp把源文件和相关的头文件(如实例代码中的头文件stdio.h)预编译成一个.i的文件。

执行的命令:gcc -E 文件名.c -o 文件名.i

预编译的作用:

a、处理所有的“#include”预编译指令

b、处理所有的"#define"指令,将代码中所有的"#define"删除,并展开所有的宏定义

c、处理所有的条件预编译指令,如#if #elif #else #ifdef #ifnodef #endif等

d、删除所有的注释

e、添加行号和文件名标识,以便产生错误时给出提示信息

2、编译(生成<span style="color: rgb(255, 0, 0);">.s</span>文件)

编译器gcc把预处理后的文件进行语法分析、语义分析以及优化后生成汇编代码文件。

执行的命令:gcc -S 文件名.i -o 文件名.s

3、汇编(生成.o文件)

汇编器把汇编代码文件转换成中间目标文件

执行的命令:gcc -c 文件名.s -o 文件名.o  (注意:这里是小写的-c,而不是大写的-C,本人在此处踩坑,出现异常)

4、链接(生成可执行文件)

链接器ld把目标文件与所需要的所有的附加的目标文件(如静态链接库、动态链接库)链接起来成为可执行的文件

执行的命令:gcc 文件名.o -o 文件名

linux下编译c文件成为可执行文件的实例

1、准备C文件

在命令行模式下输入:vim hello.c

进入编辑模式,输入以下代码:

#include<stdio.h>

int main(void){
    printf("Hello World!\n");
    return 0;
}

首先点击ESC键退出编辑模式,然后输入:wq(注意输入的时候有冒号哦)回到命令行。

2、编译

编译C文件成可执行文件

执行的命令:gcc hello.c -o hello

输入ls命令,能看到当前文件夹下多了一个文件:hello

3、执行

执行:./hello

프리컴파일러 cpp는 소스 파일과 관련 헤더 파일(예: 예제 코드의 헤더 파일 stdio.h)을 .i 파일입니다.

실행된 명령: gcc -E filename.c -o filename.i

사전 컴파일 기능:

a 모든 "#include" 사전 컴파일 지침 처리

b, 모든 "#define 처리 " 명령, 코드에서 모든 "#define" 삭제 및 모든 매크로 정의 확장 🎜🎜c, #if #elif #else #ifdef #ifnodef #endif 등과 같은 모든 조건부 사전 컴파일 명령 처리 🎜🎜d, 삭제 모든 댓글🎜🎜e, 줄 번호와 파일 이름 식별을 추가하여 오류 발생 시 프롬프트 정보가 제공되도록🎜🎜🎜2, 컴파일( 🎜<span style="color: rgb(255, 0, 0);">.s🎜</span>파일 생성 )🎜🎜🎜🎜컴파일러 gcc는 전처리된 파일에 대해 구문 분석, 의미 분석 및 최적화를 수행하여 어셈블리 코드 파일을 생성합니다. 🎜🎜실행된 명령: gcc -S 파일 이름.i -o 파일 이름.s🎜🎜🎜3. 어셈블리(.o 파일 생성)🎜🎜🎜어셈블러는 어셈블리 코드 파일을 중간 파일로 변환합니다. 대상 파일 🎜🎜이 실행하는 명령: gcc -c filename.s -o filename.o (참고: 대문자 -C가 아닌 소문자 -c입니다. 여기서는 아래로 내려갑니다. Pit, 예외 발생)🎜🎜🎜4. 링크(실행 파일 생성)🎜🎜🎜링커 ld는 대상 파일을 필요한 모든 추가 대상 파일(예: 정적 링크 라이브러리, 동적 링크 라이브러리)과 연결하여 실행 파일로 만듭니다🎜. 🎜실행된 명령: gcc 파일 이름.o -o 파일 이름🎜🎜🎜🎜Linux🎜🎜🎜🎜🎜c 파일을 실행 파일로 컴파일하는 예 1. C 파일을 준비합니다🎜🎜🎜In 명령줄 모드에서 vim hello.c를 입력하세요. ) 명령줄을 반환합니다. 🎜🎜🎜2. Compile🎜🎜🎜C 파일을 실행 파일로 컴파일🎜🎜실행할 명령: gcc hello.c -o hello🎜🎜ls 명령을 입력하면 현재 폴더에 여러 파일이 있습니다. 파일 만들기: hello🎜🎜🎜3. 🎜🎜🎜실행: ./hello🎜🎜를 실행하여 hello World! 🎜🎜🎜🎜🎜관련 추천: "🎜Linux 비디오 튜토리얼🎜"🎜

위 내용은 Linux에서 s 파일을 생성하는 프로세스를 무엇이라고 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.