본문 바로가기

compile

e2fsprogs arm cross-compile for android e2fsprogs 의 filefrag Tool 을 arm 에서 사용하기 위해 build 시도. 0. 소스코드 다운로드 http://sourceforge.net/projects/e2fsprogs/?source=dlp 1. arm build toolchain 경로를 path 에 추가.이건 .configure 에서 CC 로 지정한 build tool 을 direct 로 호출해 버리기 때문임.export PATH=/home/onegun/2_hdisk/storage/utils_ubuntu/build_toolchains/MOST-build-toolchain/arm-2009q1/bin/:$PATH 2. ./configure 로 make 파일 생성./configure --target=arm-linux --host=ar.. 더보기
volatile keyword "비휘발성" 이라는 의미로,컴파일러에게 임의의 최적화를 금지할때 쓰는 키워드 이다. #define LCD_RAM (*((volatile unsigned short *) 0x60020000)) /* RS = 1 */ 이런식으로 address 에 직접 access 할때,저장공간을 컴파일러가 최적화 하여, r3 나 r5 로 변경해 버리면 곤란할 것이다. 또한, HW 에 의해서 지속적으로 변경되는 데이터를 담고 있다면,이또한 read 할때마다, 값이 update 되어야 하는데컴파일러 최적화는 이를 방해하는 요소가 된다. 이러한 것들을 피할때 volatile keyword 를 사용한다. 단, 추가 첨언을 하자면..The rule of thumb in Linux kernel programming is that if.. 더보기
Linux kernel compile 시 stdio.h / stdlib.h 애러 얼마전 커널에서 동작하는 간단한 프로그램을 만들었다. 컴파일 하는데..앵.. 왠걸.. 엄청난 애러가 났다. kernel/syscall_interpret/auditex_string.c:1:20: error: stdlib.h: No such file or directory 결론부터 말하면 kernel 에서는 stdlib 들을 사용할 수 없다. standard library 는 glibc 에 연동되어서 돌아가는데, kernel 에서는 이를 이용할 수 없기 때문이다. 따라서 kernel 쪽에서는 이를 대비한 간단한 lib들을 따로 재공 하고 있는데 그 위치는 컴파일 환경마다 다르겠지만 보통 다음과 같다. linux-버전명\lib 더보기