강좌 & 팁
EZ-S3C6410에서 실행되는 apache2 컴파일 방법
ez-s3c6410에서 apache, httpd 가 필요한 분들이 많으신거 같아서 컴파일한 방법을 올려드립니다.
1. 작업 환경
서버 : Ubuntu 11.04 Server 버전 툴체인 : arm-linux-gnueabi-4.3.2.tar.gz
2. 아파치 버전
파일 : httpd-2.2.9.tar.gz [다운로드] (공식 사이트에서는 httpd-2.2.18.tar.gz 버전이 올라와 있지만, 오류를 잡지 못해서 2.2.9 버전을 사용하였습니다.)
3. 압축 풀기
다운로드 받은 파일의 압축을 풀어줍니다.
$ tar zxvf httpd-2.2.9.tar.gz
압축을 푼 다음 httpd-2.2.9 폴더 안으로 이동합니다.
$ cd httpd-2.2.9
참고로 제가 컴파일 할 때 절대 경로는 /staff/sepiawind/apache2/httpd-2.2.9에서 작업을 하였습니다.
4. 컴파일(i386)
apache2을 크로스 컴파일 하면서 제대로 진행되지 않는 문제점이 있습니다. 이 경우 일반 컴파일을 하여서 필요한 파일 몇가지를 복사해놔야 합니다.
httpd-2.2.9 폴더 안에서 작업을 진행합니다.
환경 설정을 먼저 해줍니다. $ ./configure --with-included-apr --enable-so && make
끝난 후, 아래와 같이 폴더를 만든 다음, 필요한 파일 2가지를 복사해놓습니다.
컴파일 한 곳 상위에 임시폴더 tmp 폴더를 생성합니다. $ mkdir ../tmp
그 다음 아래 파일들을 tmp 폴더 아래로 복사를 합니다. $ cp -a srclib/pcre/dftables ../tmp/
$ cp -a server/gen_test_char ../tmp/
설정한 내용들을 지워줍니다 $ make distclean
4. arm-generic-linux-eabi 로 컴파일
이제 ez-s3c6410 보드에서 사용하기 위해 컴파일할 차례입니다.
httpd-2.2.9 폴더 안에서 작업을 진행합니다.
아래 내용을 복사해서 설정을 합니다. (복사할 때, html 내용이라서 약간 변형되게 복사될 수도 있습니다.
참고로 설치 폴더 위치를 --prefix=/usr/local/apache2 으로 설정하였습니다. 다른 폴더로 설치하실 분들은 --prefix 내용을 변경해줘야합니다.
$ ac_cv_file_dbd_apr_dbd_mysql_c=no ac_cv_sizeof_size_t=4 ac_cv_sizeof_ssize_t=4 \
에러 없이 끝났다면 make 명령을 실행합니다. $ make
5. make 오류 수정(1)
아래와 같이 첫 번째 오류 메시지가 나타납니다.
(생략)
오류 메시지에 나온 곳을 처리해 줍니다.
먼저 srclib/apr/include/apr.h 파일을 수정합니다.
$ sudo vi srclib/apr/include/apr.h
(수정 전 : 488 라인)
(수정 후 : APR_PATH_MAX 255 항목을 넣고 아래 부분을 주석 처리 합니다.)
그 다음 srclib/apr/include/apr_want.h 파일을 수정합니다. $ sudo vi srclib/apr/include/apr_want.h
맞는 방법인지는 모르겠지만, 에러가 되서 주석처리 했더니 컴파일이 진행되었습니다.
(수정 전 : 93 라인)
(수정 후 : 주석 처리를 한다.)
수정 후, 다시 make를 실행합니다.
$ make
6. make 오류 수정(2)
이번엔 make를 실행하던 도중 바이너리를 실행할 수 없다는 문제가 나타납니다.
./dftables /staff/sepiawind/apache2/httpd-2.2.9/srclib/pcre/chartables.c
아까 복사해두었던 파일을 복사하도록 합니다. 그리고 다시 make를 수행합니다.
$ cp ../tmp/dftables srclib/pcre/
또 다시 오류가 나타납니다.
/bin/sh: ./gen_test_char: 바이너리 파일을 실행할 수 없음
아래와 같이 파일 복사를 하고 make를 해줍니다.
$ cp ../tmp/gen_test_char server/
make 가 정상적으로 끝날 것입니다.
7. make install
make install 을 해줍니다.
$ sudo make install
설정 할때, 저는 --prefix=/usr/local/apache2 명령을 주었기 때문에 /usr/local/apache2 위치에 설치가 될 것입니다. 설치된 폴더로 이동합니다.
$ cd /usr/local/apache2
이제 apache2 폴더는 arm-generic-linux-gnueabi 로 컴파일 되서 ez-s3c6410에서 돌아갈 수 있게 되었습니다.
컴파일 완료
사정상 약속이 있어서 나가봐야하기 때문에(;ㅁ; 죄..죄송합니다.)
컴파일이 완료된 apache2 파일을 ez-s3c6410 보드에 복사해서 실행하는 방법은 내일(다음 강좌) 설명하도록 하겠습니다.
|