[SharedLib 예제]
1)Home directory에 SharedLibExample 디렉토리를 생성하고 해당 디렉토리로 이동한다.
2) vi editor로 main.c 를 작성한다.
-------------------------------------------------------------
#include <stdio.h>
#include "add.h"
void main(int argc, char* argv[])
{
int result = 0;
if (argc < 2) {
printf("Usage : ./app.out <1st num> <2nd num>\n");
return;
}
result = add(atoi(argv[1]), atoi(argv[2]));
printf("Reuslt : %s + %s = %d\n", argv[1], argv[2], result);
return;
}
-------------------------------------------------------------
3) vi editor로 add.h 를 작성한다.
-------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
extern int add(int , int);
-------------------------------------------------------------
4) vi editor로 add.c 를 작성한다.
-------------------------------------------------------------
#include "add.h"
int add(int a, int b)
{
int result;
result = a + b;
return result;
}
-------------------------------------------------------------
5) vi editor로 .bashrc(Home directory)의 제일 마지막에 아래 내용을 추가한다. (홈디렉터리에서 vi .bashrc 명령어 입력 후 추가)
LD_LIBRARY_PATH=/home/[본인ID]/SharedLibExample:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
🐤shared Library의 경우 라이브러리를 어디 라이브러리에서 갖고 와야하는지 path를 추가해야 함
6) 명령어 프람프트에서 아래 Command를 실행한다.
201LinuxEx185@linux01:~$ source .bashrc
6) 명령어 프람프트에서 아래 Command를 실행한다.
201LinuxEx185@linux01:~$ gcc –fPIC –c add.c 🐤 add.o 가 결과물로 나옴
201LinuxEx185@linux01:~$ gcc –shared –o libadd.so add.o 🐤 add.o 오브젝트 사용해서 libadd.so라는 shared object 만듦
201LinuxEx185@linux01:~$ gcc –o mytest main.c libadd.so 🐤main과 shared object를 dynamic linking -> libadd.so의 코드가 mytest실행파일에 들어가지 않음(실행(./mytest 1 2)할 때 link가 실시간으로 됨)
7) app.out을 아래와 같이 실행해본다.
201LinuxEx185@linux01:~$ ./mytest 1 2
'개발하자' 카테고리의 다른 글
Java CS 지식 정리 (0) | 2022.07.04 |
---|---|
암호 - 대칭 암호화에 대해서 (0) | 2022.06.05 |
컴퓨터공학과 졸업프로젝트로 사투리 오디오북 웹서비스 만들기(Glow-TTS, Django, Docker Compose, 졸프 후기) (0) | 2022.06.01 |
[Linux] Makefile 간단한 예제 (0) | 2021.11.29 |
[Linux] 두개의 분리된 파일을 하나의 실행파일로 합치는 과정 (0) | 2021.11.29 |