Apacheとの格闘

OpenSSL 0.9.xのコンパイル+インストール

とりあえず、./configを以下のオプションで実行
# ./config \
> --prefix=[インストールパス] \
> no-hw no-shared no-asm no-krb5 threads
各オプションの効果については後ほど。
※--prefixは絶対パスで指定しないとインストールできないことに。。。

さらに、クロスコンパイル用にMakefileの変更を行います。
CC = gcc
AR = ar $(ARFLAGS) r
RANLIB = /usr/bin/ranlib
↓
CC = sh3-linux-gcc
AR = sh3-linux-ar $(ARFLAGS) r
RANLIB = sh3-linux-ranlib
CC、AR、RANLIBの3つをクロスコンパイル用にすればよいらしい。
※./configを再度実行すると、Makefileが元に戻るので注意

そして、インストールすればインストール先のディレクトリになにやらつくられるはず
make install

~こんぱいるちゅう~
~いんすとーるちゅう~

ls [インストールパス]
bin include lib ssl
これでOpenSSLの準備は完了。



Apache 2.0.xのコンパイル+インストール

こちらは、./Configureを以下のオプションで実行
# ./Configure \
> --prefix=[インストールパス] \
> --enable-ssl \
> --with-ssl=[OpenSSLインストールパス]
その他、オプションは星の数ほどあるけど、今回は最小構成で。

さらに、クロスコンパイル用にMakefile(その他)の変更を行います。
  • ./server/Makefile
CLEAN_TARGETS = gen_test_char test_char.h \
	ApacheCoreOS2.def
 ↓
CLEAN_TARGETS = gen_test_char ApacheCoreOS2.def

gen_test_char: $(gen_test_char_OBJECTS)
	$(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS)
 ↓
gen_test_char: gen_test_char.o
	gcc $(ALL_CPPFLAGS) $(ALL_INCLUDES) -o gen_test_char gen_test_char.c $(LIBS)

gen_test_char.o: gen_test.c
	gcc -c $(ALL_INCLUDES) $(ALL_CPPFLAGS) $<
上のgen_test_charという実行オモジュールはMake中に実行されるので、クロスコンパイラでコンパイルするとエラーになるため、
通常のgccでコンパイルするように変更を行います。
※Makefile.inを書き換えておくと、次回から幸せかもしれません

  • ./srclib/apr/libtool
LTCC="gcc"
 ↓
LTCC="sh3-linux-gcc"

CC="gcc"
 ↓
CC="sh3-linux-gcc"

LD="/usr/bin/ld"
 ↓
LD="sh3-linux-ld"

RANLIB="ranlib"
 ↓
RANLIB="sh3-linux-ranlib"
単にクロスコンパイル用のツールに切り替えているだけ

  • ./srclib/apr-util/uri/Makefile
CLEAN_TARGETS = gen_uri_delims uri_delims.h
 ↓
CLEAN_TARGETS = gen_uri_delims 

gen_uri_delims: $(gen_uri_delims_OBJECTS)
	$(LINK) $(EXTRA_LDFLAGS) $(gen_uri_delims_OBJECTS) $(EXTRA_LIBS)
 ↓
gen_uri_delims: gen_uri_delims.o
	gcc $(ALL_CPPFLAGS) $(ALL_INCLUDES) -o gen_uri_delims gen_uri_delims.c $(LIBS)

gen_uri_delims.o : gen_uri_delims.c
	gcc -c $(ALL_INCLUDES) $(ALL_CPPFLAGS) $<
./server/Makefile同様、Make時に実行されるため通常のgccでコンパイルするように変更します。
※Makefile.inを書き換えておくと、次回から幸せかもしれません

  • ./srclib/apr-util/xml/expat/libtool
LTCC="gcc"
 ↓
LTCC="sh3-linux-gcc"

CC="gcc"
 ↓
CC="sh3-linux-gcc"

LD="/usr/bin/ld"
 ↓
LD="sh3-linux-ld"

RANLIB="ranlib"
 ↓
RANLIB="sh3-linux-ranlib"
単にクロスコンパイル用のツールに切り替えているだけ

  • ./srclib/apr/build/apr_rules.mk
LT_COMPILE   = $(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) -c $< && touch $@

LINK         = $(LIBTOOL) $(LTFLAGS) --mode=link $(LT_LDFLAGS) $(COMPILE) 
       -version-info 9:12:9 $(ALL_LDFLAGS) -o $@
 ↓
LT_COMPILE   = $(LIBTOOL) --tag=CC $(LTFLAGS) --mode=compile $(COMPILE) -c $< 
       && touch $@

LINK         = $(LIBTOOL) --tag=CC $(LTFLAGS) --mode=link $(LT_LDFLAGS) 
       $(COMPILE) -version-info 9:12:9 $(ALL_LDFLAGS) -o $@
※ほんとは1行で
なんか、--tagがないと怒られるよ?(コンパイル環境によっては、必要ないかも??)

  • ./srclib/pcre/Makefile
CLEAN_TARGETS = dftables chartables.c
 ↓
CLEAN_TARGETS = dftables

dftables: dftables.lo
	$(LINK) $(EXTRA_LDFLAGS) dftables.lo $(EXTRA_LIBS)
 ↓
dftables: dftables.o
	gcc $(ALL_CPPFLAGS) $(ALL_INCLUDES) -o dftables dftables.c $(LIBS)

dftables.o: dftables.c
	gcc -c $(ALL_INCLUDES) $(ALL_CPPFLAGS) $<
同上
※Makefile.inを書き換えておくと、次回から幸せかもしれません

で、ようやくMake
make CC=sh3-linux-gcc LDFLAGS=-L[クロスコンパイルライブラリパス]
Make時にCC、LDFLAGSを上書きします。

以前にどこかでコンパイルしたソースをそのまま任意の場所にコピーすると、./server/export_filesが旧パスを指定したままになるので、エラーとなる。
make clean以外のコマンドで消せるかも??

未実行!
最終更新:2007年03月02日 11:44
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。