기본카테고리

[Linux] 프로그램 개발 방법

DevReff 2013. 7. 12. 11:57




728x90

1. 프로세스
 - 목록 보기 : ps -ax
 - 죽이기 : kill [-프로세스번호]

2. 파일
 - 이름변경 : mv

3. gcc 사용
 -o <출력파일명> <소스 또는 오브젝트 파일명> [...] : 출력(output) 화일명을 정함. 예) gcc -o hello hello.cpp
 -c : 오로지 컴파일(compile) 작업만 하고 싶은 경우 즉, 오브젝트 파일(*.o) 생성. 가능한 -fPIC 옵션을 같이 사용한다.
 -l <라이브러리 파일명> : 라이브러리 파일 지정. (소문자 L)

4. 라이브러리 관리 명령 : ar [-]옵션 파일명
 ==> 라이브러리 파일의 확장자 : *.a
 -r : 라이브러리 파일을 만든다. 예) ar r <라이브러리 파일명> <오브젝트 파일> [...]

5. 정적 라이브러리 만들어 쓰기 (파일 확장자 : *.a)
 1) Object 코드 만들기
  $ gcc –c square.c factorial.c
 
   2) 라이브러리 만들기
  $ ar r libstuff.a square.o factorial.o

   ar 옵션
    t : library 내용보기
    p : library 소스보기
    r : library insert or replace
    s : Index 생성
    x : 묶은 파일 풀기
    d : 삭제
 
   3) 라이브러리 인덱스 만들기
        라이브러리 자체에 루틴 정보를 추가하는 과정
   $ ranlib libstuff.a
  라이브러리 만들기 + 인덱스 만들기 통합 명령
   $ar rs libstuff.a square.o factorial.o
 
   4) 각 루틴의 signature가 extern 형태로 선언된libstuff.h 만들기
 
   5) 컴파일
  $gcc –I ../include –L../lib –o wibble wibble.c –lstuff –lm
   -lstuff : 지금 만든 library 링크 (순서가 앞에 있으므로 이곳의 것이 불림)
   -lm : 표준 수학 library 링크

6. 동적 라이브러리 만들어 쓰기 (파일 확장자 :  *.so)
 1) 재배치코드 생성
  -fpic, -fPIC : 공유를 위한 위치 독립적 생성
  $gcc –c –fPIC square.c factorial.c

   2) 공유라이브러리 생성 (인덱스 과정 불필요)
  $gcc –shared –o libstuff.so square.o factorial.o 사용
 
   3) 정적인 경우와 동일 (.a와 .so가 둘 다 있으면 .so를 선택 수행)
  $gcc –I../include –L../lib –o wibble wibble.c –lstuff –lm
 
   4) 꼭 정적인 라이브러리를 링크 하고자 할 때
  $gcc –I../include _L../lib –o wibble wibble.c libstuff.a –lm
  ldd 명령: 실행 프로그램이 사용하는 공유 라이브러리 나열

7. 프로세스에 링크된 라이브러리 보기
 ldd [컴파일 된 프로세스]
 

'기본카테고리' 카테고리의 다른 글

[VC++]CListCtrl 을 읽기전용으로 설정하는 방법  (0) 2013.10.01
[C++] Socket통신  (0) 2013.09.18
[Linux] Thread  (0) 2013.07.11
[VC++]Queue  (0) 2013.06.05
[VC++] STL(Standard Template Library)  (0) 2013.05.11