프로그램을 빌드하는데 4가지 단계
단계별 빌드 과정
#include <stdio.h>
int main(int argc, char **argv)
{
printf("Hello Main function\n");
return 0;
}
//main.c 파일 생성
//Processing 단계 main.i 파일을 생성 (-E 옵션: 전처리 과정의 결과 화면에 보여줌)
➜ 55_blog gcc -E main.c > main.i
➜ 55_blog ls
main.c main.i
//compiling 단계 main.s 파일 생성 (-S 옵션: 전처리된 파일을 어셈블리 파일로 컴파일까지 수행)
➜ 55_blog gcc -S main.i
➜ 55_blog ls
main.c main.i main.s
//Assembly 단계 as로 .s파일을 .o 파일 생성 (-c 옵션: 어셈블까지 수행하고 링크는 수행 안함)
➜ 55_blog as -c main.s -o main.o
➜ 55_blog ls
main.c main.i main.o main.s
//Linking 단계 -v 옵션으로 링킹이 된다는 것만 확인함 (-v 옵션: 컴파일 수행된느 과정 출력, -o 옵션: 실행파일 생성)
➜ 55_blog gcc -v main.o -o a.out
Apple clang version 12.0.5 (clang-1205.0.22.11)
Target: x86_64-apple-darwin20.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
"/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 11.0.0 11.3 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -o a.out -L/usr/local/lib main.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.5/lib/darwin/libclang_rt.osx.a
➜ 55_blog ls
a.out main.c main.i main.o main.s
//최종 실행파일
➜ 55_blog ./a.out
Hello Main function
반응형
'Software > Embedded system' 카테고리의 다른 글
Sizeof()for struct and pointer with pack() 64bit system (0) | 2022.06.04 |
---|---|
IPC Concept (0) | 2022.02.13 |
exec() System call concept (0) | 2021.06.27 |
fork() system call concept (0) | 2021.06.27 |
Memory - stack and heap (0) | 2021.05.26 |