반응형

출처 : http://www.misofruit.co.kr/seojewoo/programming/mobileprogramming/linuxprogramming.htm


- 윈도우에서 사용하는 용어는 빨간색으로 표시함... -

.so .rpm .a .pro .lo .o .la .am .in .target .ac .in configure make progen 궁금한거...

☞ .o -->컴파일해서 만들어지는 오브젝트(object)파일
    ex) gcc -o test test.c     gcc test.c -o test    -->test라는 실행파일 생성
    ex) gcc -c test.c    -->.o (object)파일 생성... .obj파일... 

☞ .a -->archive를 의미하는 것 정적 라이브러리
☞ .so -->x-shared-library 동적(공유) 라이브러리

정적 라이브러리는 윈도우의 .lib   컴파일시에 로딩
동적 라이브러리는 윈도우의 .dll    runtime시에 로딩
동적 라이브러리는 a.out는 *.sa,ELF는 *.so로 만들어짐...

 ex) #ldd  파일 이름.... 특정 바이너리 파일의 필요한 라이브러리 목록 보기...
       #ldd /usr/bin/lynx   텍스트용 웹 브라우저인 lynx프로그램이 어떤 동적 라이브러리를 원하는 프로그램인지 체크하는 명령어

☞ .la -->x-shared-library-la

☞ .rpm -->윈도우의 install파일 같은거 아니 SDK라구 해야 할거 같습니다.
     ex) rpm -Uvh 패키지명  .rpm설치 명령
     ex) rpm -qlv   패키지명 .rpm 패키지가 설치될 해당 폴더와 내용보기
     ex) rpm -qi    패키지명  .rpm 패키지의 정보 보기...
     http://rpmseek.com 이곳에서 rpm검색하구 다운 받을 수 있음...

☞ .in .ac-->autoconf 에서는 입력값으로 configure.in을 사용하였으나, .in은 configure의 입력값으로 사용되고 있기 때문에 오해를
    피하기 위해서 현재는 configure.ac를 사용하게 되었다구 합니다.
    주로 *.in 파일들은 configure의 입력값으로 취급되고 있으며, 이 파일들이 configure과정을 거쳐서 실제 원하는 파일이 됩니다.
    예를 들어서 script.in이라는 파일은 configure를 거쳐서 script라는 파일이 될 수 있습니다. 따라서 configure.in을 구분하기 위해
    현재는 configure.ac 라고 부르게 되었다구 합니다.
    윈도우에서는 컴파일러에게 옵션 같은거루 알려주는 거 같은데... 무슨 파일인지는 잘 모름...
    다시 말해서 Makefile파일이 .dsw 같은 총괄하는 건데 이게 실행이 되기 위해서 도와 주는 거 같음...

    관련 사이트:
http://people.linuxkorea.co.kr/~yong/programming/autoconf
    -->autoconf는 패키지에서 필요로 하거나 사용하는 시스템 기능을 나열해 둔 템플릿인 configure.in으로부터 설정 스크립트를
         만들어내구 이걸 만들어 내기 위해서는 매크로 프로세서인 GNU m4가 있어야 한다.
         물론 당연히 autoconf패키지도 설치한 상태여야 하구...

 - 순서 - 뭔소린지?


1. configure.ac 에 Makefile 이 필요로 하는 사항들을 기록한다.

2. Makefile.am 에 이들 가변수를 사용하여 Makefile 의 초안을 작성한다.

3. configure 실행시에 configure.ac 에 지정한 항목들이 check 되면서 Makefile.am 에서 필요한 정보들이 유효한 값들로 치환된다.

4. Makefile.am 이 유효한 값들을 가지면서 Makefile 이 된다.

반응형
Posted by Real_G

댓글을 달아 주세요

  1. makefile에 대해서 공부 하시나봐요?
    일단 버전에 따라 다르고 make도 여러가지라서(gmake 라던가 그냥 make도 있고 ㅎㅎ) 딱히 말씀 드리긴 힘들지만

    일단 일반적으로 config.mk 파일을 메이크 공용 환경 설정 파일로 사용하고,
    makefile은 컴파일 할 방법을 기술해 놓은 파일 입니다.
    이 파일을 기반으로 make 프로그램이 어떤 파일을 어떻게 처리 할지를 따라가게 됩니다.

    그리고 make는 TARGET 이라는 것에 기반을 두고 있는데
    예를 들어서

    test.o: 라는 줄이 있으면
    test.o 라는 파일을 만들기 위한 방법을 아래 기술하게 됩니다.
    이 이름이 make test.o 이런식으로 컴파일을 하는 명령어가 되구요
    다르게 표현하자면 일반적으로 사용하는
    make clean,make all,make install 등도 실제로는
    makefile 상에
    clean:
    rm *.o
    all:
    cc -o ..
    install:
    cp test.o /tftproot/test.o

    이런식으로 구성되어 있답니다.
    그리고 make를 인자 없이 실행하면 가장 위의 타켓,
    이경우에는 clean이 기본으로 실행이되겠죠?

    그리고 몇가지 내부 매크로들도 있는데 알아 두시는게 좋습니다
    $@ 라던가 이런 외계어들이 말이죠 ㅋ

    • Real_G 2008.08.27 23:51  수정/삭제 댓글주소

      ^_^ 요즘 로보트에 들어가는 프로그램 만드는데 라이브러리때문에 문제가 생겨가지고 쫌 알아봤던거였네요.

      MAKEFILE 에 관한 답변 감사드립니다.
      쉘 프로그래밍이랑 비슷해서 대충은 알고 있었는데 언젠간 확실히 정복해야 할 필요성을 느끼고 있어요~