64비트/SMP 커널 만들기 - autotools 적용에 대해 조언부탁드립니다.
글쓴이: gurugio / 작성시간: 금, 2009/03/27 - 9:17오전
자동빌드툴을 써본적은 없지만 시험삼아 적용해보고 있습니다.
전통적인 autotools를 쓰고 있는데요
기본적인 문서를 보면서 환경을 꾸미는데
제가 만든 최종 결과물은 프로그램이 아니라 바이너리 이미지 파일이다보니
일반적인 빌드와는 약간 절차가 다른것 같습니다.
일단 얼키설키 만들었고 쓰면서 조금씩 보완할 계획입니다.
그리고 질문사항이 있습니다.
1. automake는 소스들을 gcc로만 컴파일하고 링크까지 하려고 합니다.
저는 gcc로 컴파일만 하고 ld로 따로 링크하려고하는데요
강제로 ld를 호출하는 방법이 있나요?
2. C 소스 외에 nasm으로 어셈블되는 어셈블리 파일들은 어떻게 빌드하나요?
3.make dist 명령으로 패키지를 만들려고하는데요
소스는 패키지에 저장되는데 ld 스크립트나 텍스트 파일등은 어떻게 패키지에 넣어야 할지요.
댓글
http://www.sourceware.org/aut
http://www.sourceware.org/autobook/autobook/autobook_toc.html#SEC_Contents
26장을 보면 될것 같네요. 해당부분이 Cross Compiler에 관련된 부분이고 잠시 보니
LD같은 것을 지정할 수 있게 되어있던데...
문제는 ASM은 못찾겠네요...
------------------------------
좋은 하루 되세요.
------------------------------
좋은 하루 되세요.
1. 질문을 잘 이해
1. 질문을 잘 이해 못했습니다. ^^;
2. 확장자가 .s, .S 인 것들은 자동으로 포함되는 것 같습니다. AM_PROG_AS에 원하는 어셈블러를 지정할 수 있구요.
3. EXTRA_DIST 변수에 지정해주면 될 겁니다.
현재 빌드가 크게
현재 빌드가 크게 4단계로 진행됩니다.
1. 커널용 C 소스를 gcc로 컴파일해서 각각 .o로 만들기
2. 커널용 .asm 소스를 nasm으로 어셈블해서 각각 .o로 만들기
3. 부트로더용 .asm 소스를 nasm으로 어셈블해서 하나의 바이너리 이미지 만들기
4. 커널용 .o 파일들을 링크해서 하나의 바이너리 이미지 만들기
이렇게 생성된 바이너리 이미지를 합치면 플로피디스크 이미지가 됩니다.
automake로 1+2단계를 한방에 처리할 수 있는 방법을 모르겠습니다.
지금은 그냥 make 문법만 사용해서 만들었습니다.
결국 configure는 크로스컴파일러가 있는지 환경만 검사하고
automake는 Makefile을 호출하기만 하는 반쪽짜리 자동빌드가 되버렸습니다.
C코드와 asm 코드들의 디렉토리를 변경해볼까 했는데
그러면 빌드 단계가 더 복잡해져서 의미가 없어지는것 같습니다.
그냥 gcc만 사용하게 만들면 ld는 collect2로 호출하면 되니까 문제가 안되는데
nasm같이 애매한 툴을 사용하면 어떻게해야할지 방법을 못찾겠습니다.
----
섬기며 사랑하면 더 행복해집니다.
개인 홈페이지가 생겼습니다 http://caoskernel.org
어셈러브를 개편중입니다 http://www.asmlove.co.kr
지금 2대의
지금 2대의 컴퓨터에서 빌드를 테스트하고 있습니다.
한대는 32bit ubuntu 7.10 인데 이 컴퓨터에서 configure.ac 등등의 스크립트를 만들어서 잘 실행했습니다.
그런데 다른 64bit ubuntu 8.10 에서는 이상한 에러들이 자꾸 출력되면서 빌드가 안됩니다.
configure 를 하다보면 이런 에러가 날 때가 있구요.
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
./configure: line 3464: syntax error near unexpected token `lt_decl_varnames,'
./configure: line 3464: `lt_if_append_uniq(lt_decl_varnames, NM, , ,'
어떤 경우에는 autoconf 명령 중간에 이런 에러가 납니다.
configure.ac:10: error: possibly undefined macro: AM_INIT_AUTOMAKE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
계속 조사를 하고 있지만 여러 툴들의 버전에 따라 약간 문제가 있는 경우가 있는것 같습니다.
아무래도 CMake로 바꿔야겠습니다.
도움말씀 주셔서 감사합니다.
----
섬기며 사랑하면 더 행복해집니다.
개인 홈페이지가 생겼습니다 http://caoskernel.org
어셈러브를 개편중입니다 http://www.asmlove.co.kr
댓글 달기