컴파일 과정
hello.c -> hello.i(헤더 파일 삽입, 매크로 치환 및 적용) -> hello.s(어휘 분석, 구문 분석, 의미 분석, 중간언어 생성, 최적화, 목적코드) -> hello.o(기계어로 어셈블) -> collect2 링커 -> hello(실행 파일 표준 C라이브러리와 링크)
gedit example.c
//------------------------
/*
두 값의 곱셈을 계산하는 프로그램
*/
#include <stdio.h>
int a,b;
double product(int, int);
main()
{
double c;
printf("Input 1 ~ 100 : ");
scanf("%d", &a);
printf("Input 1 ~ 100 : ");
scanf("%d", &b);
c = product(a,b);
printf("%d spuare %d result %g \n\n",a,b,c);
}
double product(int x, int y)
{
double p;
p = x*y;
return p;
}
//----------------------------------
#include <stdio.h>
void main()
{
double Num1, Num2, Result;
printf("Input Fst Num\n");
scanf("%lf", &Num1);
printf("Input Snd Num\n");
scanf("%lf", &Num2);
Result = Num1 * Num2;
printf("Num1 * Num2 = %g\n", Result);
}
//----------------------------------
gcc -o example example.c
./example
gedit hello.c
//----------------------------------
#include <stdio.h>
void main(void)
{
printf("Hello World\n");
}
//----------------------------------
gcc -o hello hello.c
./hello
-o -> output 파일의 이름 설정
gcc -E hello.c -> 전처리 과정의 결과를 화면에 보이는 옵션(전처리 과정에서 발생하는 오류 찾을 때 유용하게 쓰임)
gcc -v --save-temps -o hello hello.c -> -v 컴파일 과정 화면 출력, --save-temps 컴파일중 생기는 .i, .o 파일 저장
gcc -s hello.c -> 어셈블리 과정까지 진행후 멈춤 .s 파일까지만 생성
gcc -c hello.c -> 기계어 어셈블까지 진행후 멈춤 .o 파일까지만 생성
#include <stdio.h>
void main(void)
{
int iNum1, iNum2;
char chMark;
int iAns;
printf("Input calculat num\n ex) 1*2\n");
scanf("%i %c %i", &iNum1, &chMark, &iNum2);
switch(chMark){
case '+' : iAns = iNum1 + iNum2; break;
case '-' : iAns = iNum1 - iNum2; break;
case '*' : iAns = iNum1 * iNum2; break;
case '/' : iAns = iNum1 / iNum2; break;
default : break;
}
printf("%d\n", iAns);
}
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
char *s = "abcdefg", *tmp = (char *)malloc(strlen(s)*sizeof(char));
int i = 1;
while(s[i-1])
{
tmp[i-1]=s[strlen(s) - i];
i++;
}
tmp[i-1] = 0;
printf("The reversed string is \"%s\" \n",tmp);
}
//---------------------------------------------------------------
메이크 파일 만들기
gedit cal_func.h
int cal_func(int, int, char);
gedit cal_func.c
#include "cal_func.h"
int cal_func(int a, int b, char ch)
{
int i;
switch(ch)
{
case '+' : i = a+b; break;
case '-' : i = a-b; break;
case '*' : i = a*b; break;
case '/' : i = a/b; break;
default : break;
}
return i;
}
gedit calculator2.c
#include <stdio.h>
#include "cal_func.h"
void main(void)
{
int na, nb;
char chMark;
int iAns;
printf("ex) 1 + 2\n");
scanf("%i %c %i", &na, &chMark, &nb);
iAns = cal_func(na, nb, chMark);
printf("%d\n", iAns);
}
gedit Makefile
#Makefile
CC = gcc
SRC = calculator2.c cal_func.c
BINARY = calculator
BINARY :
$(CC) -o $(BINARY) $(SRC)
clean :
rm -rf $(BINARY)
설명
CC = gcc 컴파일러 지정하는 부분
SRC = calculator2.c cal_func.c 컴파이될 소스
BINARY = calculator 컴파일 후 실행될 파일 이름
명령어를 입력하는 아래 두부분은 반드시 탭키로 시작해야함.
$(CC) -o $(BINARY) $(SRC)
rm -rf $(BINARY)
%i 10진수 정수, %d 10진수 정수로 출력하겠다.
'초보의 아웅다웅 설계하기 > Ubuntu' 카테고리의 다른 글
RSA, AES, ARIA, SHA256 암호 예제 C (0) | 2016.05.23 |
---|---|
Ubuntu - Mount (0) | 2011.03.23 |
Ubuntu - Vi 편집기 (0) | 2011.03.22 |
Android - Ubuntu 명령어 (0) | 2011.03.14 |
Android - Samba to Window (0) | 2011.03.06 |