금요일, 4월 15, 2011

strsep의 잘못된 사용법

아래와 같이 코딩하면 strsep함수 내에서 에러가 발생한다.
main()
{
char stemp[256];
char **bf;
char *tok;

strcpy(stemp, "a,b,d,q,r,c");
bf = &stemp;

tok = strsep(bf, ',');
}


다음과 같이 수정해야 한다.

main()
{
char stemp[256];
char **bf;
char *tp;
char *tok;

strcpy(stemp, "a,b,d,q,r,c");
tf = stemp;
bf = &tf;
tok = strsep(bf, ',');
}

목요일, 3월 31, 2011

ubuntu 10.10(커널 2.6.35)에 새로운 커널 설치하기

kernel.org에 현재 최신커널은 2.6.38.1인데 ubuntu 10.10에서는 2.6.35가 가장 최신 커널이다.
그래서 새로운 커널을 받아서 설치하기로 했다.
커널 설정을 일일이 다 해주기 불편하므로 기존 설정을 가져온다.
$ cp /boot/config-2.6.35-28-server .config
<참조> 위는 서버로 설치한 경우이고 그렇지 않은 경우에는 /boot/config-{버전}-generic 으로 되어있다.

또는 make oldconfig 명령으로 기존 설정과 비교하면서 설정을 변경 할 수도 있다.

* 새로운 커널 컴파일
fakeroot make-kpkg --initrd --append-to-version=linux2.6.37.5 kernel_image kernel_headers
커널 이미지는 현재 커널을 빌드한 사위 디렉토리에 생성된다.


* 새로운 커널 설치
sudo dpkg -i linux-image-2.6.37.5linux2.6.37.5_2.6.37.5linux2.6.37.5-10.00.Custom_amd64.deb 
sudo dpkg -i linux-headers-2.6.37.5linux2.6.37.5_2.6.37.5linux2.6.37.5-10.00.Custom_amd64.deb

/boot/grub/grub.cfg에 보면 새로 컴파일된 커널이 등록되어 있다.