초보의 아웅다웅 설계하기/Ubuntu

Ubuntu - 컴파일

로망와니 2011. 3. 21. 01:16

 

example.c

 

example.exe

 

example1.c

 

example1.exe

 

 

컴파일 과정
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