Kernel Module 뼈대 소스 #include #include #include #include #include #include #include #define CALL_DEV_NAME "calldev" #define CALL_DEV_MAJOR 240 static int onevalue = 1; static char *twostring = NULL; module_param(onevalue,int,0); module_param(twostring,charp,0); /** * module_param(variable,type,property) * * type / variable * * short : short * ushort : unsigned short * int : int * uint : unsigned ..
고객사의 요청에 따라 자사의 X Module Driver를 껐다 켰다 하는 프로그램을 작성했다. #include #include #include #include int main() { int loop, num_devices; XDevice *device; char **extensions; Display *dpy; XDeviceInfo *devices; int digi_id; int onoff; //1 : on 2 : off XDeviceEnableControl xDeviceEnableControl; dpy = XOpenDisplay(NULL); devices = XListInputDevices(dpy, &num_devices); for(loop = 0;loop < num_devices;loop++) { ..
코딩하는 중에 에 있는 XListInputDevices를 사용해야하는데 컴파일 하다보니 자꾸 링킹에서 에러가 난다. undefined reference to 'XListInputDevices' 라고. 현재 gcc컴파일 옵션은 offX: offX.c gcc -O3 -Wall -lX11 -o $@ $< 였다. X11을 추가했는데 왜 되지 않을까 고민고민하다가 구글링을 했는데 다음과 같은게 나오더라 /usr/lib 내에서 strings -f libX* |grep XListInputDevices 해주니 XListInputDevices가 사용된 라이브러리 (a파일과 so파일)이 검색되더라. 만약 X관련된 라이브러리가 아니라면 /usr/lib 내에서 strings -f lib* |grep [사용된함수이름] 이렇게 ..
8. make 수행 시에 나타나는 에러들 make를 수행하게 되면 이상한 에러에 당황을 하게 되는 경우가 많아, 도대체 어디가 틀렸는지 감을 못잡는 경우가 허다하다. 그런데 make 매뉴얼에도 에러에 대한 종류와 그 대처 방안에 대해서는 거의 언급이 없는 관계로 이 부분은 필자의 경험에 의거해서 작성한다. (에러의 원인, 대처 방안이 모두 다 틀렸을 수도 있다는 것을 염두에 두기 바랍니다.) Makefile:17: *** missing separator. Stop. Makefile을 작성할 때 명령어(command)부분은 모두 TAB 문자로 시작해야 한다고 첫 번째 장부터 강조하였다. 위의 에러는 TAB 문자를 쓰지 않았기 때문에 make가 명령어인지 아닌지를 구별 못하는 경우이다. 대처: 17번째 줄(..
7. Makefile의 실제 예제 지금까지 강좌를 진행하면서 Makefile의 여러 가지 예제들을 제시하였다. 강좌에 나온 예제들을 조금만 바꾸면 자신의 Makefile로써 사용할 수 있다. 여기에서는 여러 가지 Makefile들의 기본틀(template)들을 소개하고자 한다. 7.1 프로그램 제작에 쓰일 수 있는 Makefile 여기서는 우선 가장 많이 사용되는 C와 C++에서의 Makefile을 소개하기로 한다. 여러 개의 파일들을 컴파일해서 하나의 실행 파일을 만드는 예제 틀이 바로 예제 7.1이다. 예제 7.1 .SUFFIXES : .c .o CC = gcc INC =
6. Makefile 작성의 가이드라인 make를 많이 써 본 사람은 어느 정도 자신만의 Makefile을 작성하는 일정한 스타일 같은 것이 있다. 프로그램이 짜는 사람마다 다르듯이 Makefile도 각각이다. 여기서는 그냥 가장 일반적인 가이드라인을 제시하기로 한다. 다음 장에서 Makefile의 여러 예제를 살펴보면서 다시 한번 자세히 설명할 것이다. 매크로를 잘 사용하면 Makefile이 깔끔해질 뿐 아니라, 내용의 수정도 용이하다. 조금 과장해서 말한다면, 최대한 매크로를 많이 사용하라고 말하고 싶다. Makefile내에서 두번 이상 나오는 것들은 매크로로 정의해 두면 편하다. 자신의 프로그램 특성에 따라서 기존의 매크로를 재정의 하는 것도 좋다. make에서 정의되어 있는 규칙들을 최대한 이용한..
5. make 중요 옵션 정리 make에서 거의 모든 것은 Makefile내부에서 모두 지정을 할 수 있다. 그중 일부를 make의 실행 시에 옵션으로 통해서 줄 수도 있다. 수많은 옵션중에서 기억해 둘 만한 것 몇 가지만 소개하기로 한다. -C dir 위에서도 밝혔듯이 Makefile을 계속 읽지 말고 우선은 dir로 이동하라는 것이다. 순환 make에 사용된다. -d Makefile을 수행하면서 각종 정보를 모조리 출력해 준다. (-debug) 출력량이 장난이 아님... 결과를 파일로 저장해서 읽어보면 make 의 동작을 대충 이해할 수 있다. -h 옵션에 관한 도움말을 출력한다. (-help) -f file file 에 해당하는 파일을 Makefile로 써 취급한다. (-file) -r 내장하고 있..
4. Makefile를 작성할 때 알면 좋은 것들 Makefile을 작성할 때 기본적으로 알고 있으면 유익한 것들을 기술한다. 이전 강좌의 내용을 대체로 이해하고 있다면 좋은 팁이 될 것이다. 메뉴얼에 나오는 광범위한 내용은 다루지 않고 기본적인 것들에 관심을 두기로 한다. 4.1 긴 명령어를 여러 라인으로 표시하기 Makefile을 작성할 때 명령어가 한 줄을 넘어간다고 가정하자. 이때 그냥 줄줄이 적는다면 읽기도 힘들고, 작성하는 사람도 조금 찜찜하다. 이때 '\' 문자를 이용해서 여러 라인으로 나타낼 수 있다. 이미 C언어에 익숙한 사람이라면 낯익은 기호일 것이다. 아래의 예제를 보자. 예제 13 OBJS = shape.o \ rectangle.o \ circle.o \ line.o \ bezier..
- Total
- Today
- Yesterday
- Visual C++
- android
- 드라이버
- jni
- Troubleshooting
- gcc
- 리눅스
- algorithm
- Quiz
- 안드로이드
- winapi
- 음악
- Cloud
- 프로그래밍
- MFC
- it
- jni강좌
- API
- C++
- driver
- source
- NDK
- C
- Python
- java
- db
- database
- AWS
- linux
- kering
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |