728x90
반응형
모듈 프로그래밍
1. 절차
모듈 소스 프로그램 작성
소스 컴파일
모듈 적재
모듈 동작 확인
결과 확인
모듈 소스 프로그램 작성
hellomodule.c
makefile 작성
makefile
hellomodule.c에서 이미 #define MODULE이 정의되어 있으므로 -DMODULE이 옵션으로 추가되어 있으면 중복정의되었다고 경고메시지를 출력한다. 따라서 둘 중 하나를 지운 후 make를 실행해야 한다.
실무에서는 다루어야 할 파일이 많기 때문에 각각의 파일마다 #define MODULE을 적어주는 것보다 옵션으로 추가해 주는 것이 좋다.
hellomodule.c에서 이미 #define MODULE이 정의되어 있으므로 -DMODULE이 옵션으로 추가되어 있으면 중복정의되었다고 경고메시지를 출력한다. 따라서 둘 중 하나를 지운 후 make를 실행해야 한다.
실무에서는 다루어야 할 파일이 많기 때문에 각각의 파일마다 #define MODULE을 적어주는 것보다 옵션으로 추가해 주는 것이 좋다.
모듈 컴파일
# make
makefile 분석
makefile
매크로 기본적인 정의 및 사용법
정의 : 매크로명=치환될 문자열
사용 : $(매크로명)
매크로가 사용된 부분이 정의된 문자열로 치환된다.
변수는 사용하기 전 정의되어 있어야 한다.
$(...) : 안에 적혀 있는 변수를 값으로 치환해 준다.
shell : 현재 vi가 실해중인 shell에서 또 다른 shell을 연다. 그리고 뒤에 나오는 명령어(uname -r)를 수행한다.
__KERNEL__ :
-D : 매크로를 정의한다.
#define
#define AAA 3
-DAAA=3
-I : #include <...> 안의 파일을 찾는 경로를 지정한다.
지정하지 않을 경우 디폴트로 지정된 경로에서 찾는다.(/usr/include)
지정할 경우 지정된 경로를 먼저 찾고 없으면 다시 디폴트 경로에서 찾는다.
build -> ../../../usr/src/linux-2.4.18-4 : 커널 소스 경로. '->'는 소프트 링크임
기타 내용
하드 링크 : 원본을 그대로 복사해 놓은 링크. 용량은 2배. 동기화되어 한 쪽의 파일을 지우면 다른 쪽도 같이 지워짐
소프트 링크 : 원본의 경로만 연결해 놓은 링크
ls -al 하면 링크는 l로 적혀 있음.
pwd 치면 경로명은 다르게 나오지만 ls하면 동일한 파일이 나옴
# : 주석. 행의 첫 문자일 경우만 가능??
cc 는 gcc를 심볼릭 링크함
gz : gnuzip
bz : bzip
1행 : 매크로 KERNELDIR를 정의한다.
2행 : 매크로 CFLAGS를 정의한다.
4행 : # make all을 치면 hellomodule.o가 있는지 확인한 후, 없으면 hellomodule.o를 만든다.
6행 : # make clean을 치면 7행의 명령을 실행한다.
7행 : 현재 경로에서 확장자가 .o인 모든 파일 및 디렉토리를 삭제한다. -rf가 붙어 있으면 디렉토리의 경우 하위 디렉토리까지 삭제한다.
매크로 기본적인 정의 및 사용법
정의 : 매크로명=치환될 문자열
사용 : $(매크로명)
매크로가 사용된 부분이 정의된 문자열로 치환된다.
변수는 사용하기 전 정의되어 있어야 한다.
$(...) : 안에 적혀 있는 변수를 값으로 치환해 준다.
shell : 현재 vi가 실해중인 shell에서 또 다른 shell을 연다. 그리고 뒤에 나오는 명령어(uname -r)를 수행한다.
__KERNEL__ :
-D : 매크로를 정의한다.
#define
#define AAA 3
-DAAA=3
-I : #include <...> 안의 파일을 찾는 경로를 지정한다.
지정하지 않을 경우 디폴트로 지정된 경로에서 찾는다.(/usr/include)
지정할 경우 지정된 경로를 먼저 찾고 없으면 다시 디폴트 경로에서 찾는다.
build -> ../../../usr/src/linux-2.4.18-4 : 커널 소스 경로. '->'는 소프트 링크임
기타 내용
하드 링크 : 원본을 그대로 복사해 놓은 링크. 용량은 2배. 동기화되어 한 쪽의 파일을 지우면 다른 쪽도 같이 지워짐
소프트 링크 : 원본의 경로만 연결해 놓은 링크
ls -al 하면 링크는 l로 적혀 있음.
pwd 치면 경로명은 다르게 나오지만 ls하면 동일한 파일이 나옴
# : 주석. 행의 첫 문자일 경우만 가능??
cc 는 gcc를 심볼릭 링크함
gz : gnuzip
bz : bzip
1행 : 매크로 KERNELDIR를 정의한다.
2행 : 매크로 CFLAGS를 정의한다.
4행 : # make all을 치면 hellomodule.o가 있는지 확인한 후, 없으면 hellomodule.o를 만든다.
6행 : # make clean을 치면 7행의 명령을 실행한다.
7행 : 현재 경로에서 확장자가 .o인 모든 파일 및 디렉토리를 삭제한다. -rf가 붙어 있으면 디렉토리의 경우 하위 디렉토리까지 삭제한다.
Makefile
Target : Dependency
(TAB) Command
(TAB) Command
JAVA 프로그래밍
프로젝트 (채팅 프로그램 ) 수행
-end-
728x90
'코스웨어 > 10년 스마트폰BSP' 카테고리의 다른 글
[BSP]업무일지-손대원-20100914 (0) | 2010.09.14 |
---|---|
[BSP]업무일지-전현수-20100913 (0) | 2010.09.13 |
[bsp]업무일지 -한경수- (0) | 2010.09.10 |
[BSP]업무일지-박동수-20100909 (0) | 2010.09.09 |
[BSP]업무일지-김상식-20100907 (0) | 2010.09.07 |
부서 발령 받았습니다. (2) | 2010.09.07 |
[BSP]업무일지-20100906-임종현 (0) | 2010.09.07 |
[BSP]업무일지 - 김강수 -20100903 (0) | 2010.09.07 |