ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 라이브러리 만들기
    LINUX(우분투) 2021. 1. 8. 12:01

    라이브러리 만들기

    cal.c 와 main.c 파일을 HOME 폴더에 만들도록 한다.

    cal.c에는 덧셈하는 함수 하나를 정의하자.

    cal.c 의 내용

     

    main.c에는 cal.c에 정의한 함수를 사용하는 main함수가 들어간다.

    main.c 의 내용

     

    아래의 명령어를 입력해서 목적 파일을 생성하자.

    gcc -c cal.c

    cal.c -> gcc -c cal.o <- 목적 파일 생성

    ar rscv libdemo.a cal.o  

    위의 명령어의 의미는 다음과 같다.

    cal.o라는 애를 라이브러리로 만들겠다는 의미로 라이브러리 파일로 생성한다는 의미이다.

    이전 컴파일은 목적 파일로 연결

     

    위의 명령어를 입력하면 아래와 같이 libdemo.a 가 생성된다.

    Terminal에서 명령어를 다음과 같이 입력하자.

    gcc -o main cal.o main.c

     

    라이브러리 파일로 연결하는 방법은 아래와 같다. 

    gcc -o main main.c -L./ -ldemo

    libdemo.a 파일에서 lib.a를 제거한 이름을 사용하는데,

    -l옵션을 사용하고 -L옵션은 디렉토리 경로 ./는 현재 경로에 라이브러리가 있다.

     

    그리고 Terminal에서 명령어를 다음과 같이 입력하자. 

    ./main

     

    아래와 같이 30이라는 결과가 나온다.

     

     

     

     

     

    공유 라이브러리 만들기

    이번에는 공유 라이브러리를 만들어 보자.

    cal.o를 공유 라이브러리로 만들어 보자.

    그리고 HOME폴더의 아래의 main파일을 지운다. main.c는 아니다.

    아래의 명령어를 입력해보자.

    gcc -shared -fPIC -o libshare.so cal.o

     

    아래와 같은 파일이 생성된다.

    공유라이브러리를 사용해서 실행하는 명령어는 아래와 같다.

    gcc -o main main.c -L./ -lshare

     

    Terminal에 아래와 같은 문구가 뜬다.

    그런데 위는 기존에는 에러가 발생해야 한다.

    /sr/lib폴더에 해당 라이브러리가 들어있어야 사용 가능하다. 

    그래서 에러가 난다.
    복사를 하기 위해서는 슈퍼유저의 권한이 필요하다.
    아래의 명령어로 슈퍼에 대해 접근하자.

    sudo su

     

    그리고 아래와 같이 root 의 비밀번호를 입력한다.

    이 복사하는 명령어가 아래의 명령어 이다.

    cp libshare.so /usr/lib/

     

    아래와 같이 입력하고, 이 폴더 내로 들어가보자.

    그리고 아래와 같이 명령어를 입력해보자.

    ls

     

    아래와 같이 libshare.so 파일이 생성되어 있다.

    그리고, 그리고 슈퍼유저를 빠져 나오자. 

     

     

    그리고, 아래와 같이 명령어를 입력한다. 빠져나오는 명령어는 아래의 명령어 이다.

    exit

     

    그리고 다시 HOME 폴더로 이동하자. 아래의 세 명령어로 이동한다.

    cd /

    cd home

    cd dwit

     

    그리고 아래의 명령어를 입력하자.

    ./main

     

    실행결과는 아래와 같다.

     

     

    'LINUX(우분투)' 카테고리의 다른 글

    간단한 소켓 통신  (0) 2021.01.11
    gcc 컴파일  (0) 2021.01.08

    댓글

Designed by Tistory.