티스토리 뷰

728x90

  1. 개요

유닉스 환경에서 Separate Compilation을 수행한다. 단 소스 파일은 각각의 폴더에 들어 있고 함수는 각 소스끼리 공유한다. 추가로 extern을 이용하여 전역 변수를 공유한다.


  2. 구조

A. 파일 저장 위치



B. 프로그램 구조

   

3. Source Code

A.  student.h

1
2
3
4
5
6
7
8
9
typedef struct Student {
    char* Name;
    int ID;
}Student;
 
void Allprint(Student s);
void mainPrint();
void mainGlobal();
void subGlobal();


B.  sub.c

1
2
3
4
5
6
7
8
9
10
11
12
#include "student.h"
int Global=10;
 
void Allprint(Student s){
    mainPrint();
    printf("ID : %d, Name : %s\n", s.ID, s.Name);
};
 
void subGlobal(){
    printf("SubGlobal = %d\n", Global);    
    mainGlobal();
}


c.  main.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include "../Sub/student.h"
 
extern int Global;
 
void mainPrint() {
    printf("Main Function call subGlobal\n");
    subGlobal();
};
 
void mainGlobal() {
    printf("MainGlobal = %d \n",Global);
};
 
int main() {
    Student JSY;
    JSY.Name = "이름";
    JSY.ID = 20122012;
 
    Allprint(JSY);
 
    return 0;
}


4. Compile and Rerult

  각각의 폴더에 들어있는 소스 코드를 따로 컴파일(.o파일을 만들고)을 하고 그 목적파일을 가지고 프로그램 파일을 생성한다. 

A.  sub.o

  sub.c의 오브젝트 파일 생성 과정입니다. 수행 명령어는 gcc -c -sub.c 입니다.


B.  main.o

  main.c의 오브젝트 파일 생성 과정입니다. 수행 명령어는 gcc -c -main.c 입니다.


C.  result.exe 와 실행 결과입니다.

  최종 프로그램 result 생성 과정입니다. 수행 명령어는 gcc -o Result ./Sub/sub.o ./Main/main.o 입니다.



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함