« T2SPのT-Kernelソースコードのビルド | トップページ | T2SPのT-Kernelソースコードのビルド(eclipseの設定) »

2015/05/29

T2SPのT-Kernelソースコードのビルド(修正の詳細)

 前回の記事で予告した「修正の詳細」です。

■ライブラリのビルドで発生した問題
----
【問題】
make: /usr/local/te/etc/platform: Command not found
../../../etc/makerules:134: /usr/local/te/etc/sysdepend/tef_em1d/makerules.sysdepend: No such file or directory
make: *** No rule to make target '/usr/local/te/etc/sysdepend/tef_em1d/makerules.sysdepend'. Stop.
【対応】
 環境変数BDが設定されていなかったので、デフォルト値が使用されてエラーとなっていた。
 make実行前に、BDにソースコードのルートを設定するために、
export BD=/c/work/T-Kernel2.0/srcpkg/tkernel_source/
を実行で解決。
----
【問題】
/etc/sysdepend/tef_em1d/makerules.sysdepend:32: *** 'GNU_BD' is not defined. Stop.
【対応】
 環境変数GNU_BDが設定されていなかったのでエラーとなっていた。
 make実行前に、gccクロスコンパイラのインストールフォルダ(targetフォルダ)を設定するために、
export GNU_BD=/c/gnutools
を実行で解決。
----
【問題】
/etc/sysdepend/tef_em1d/makerules.sysdepend:36: *** 'GNUARM_2' is not defined. Stop.
【対応】
 環境変数GNUARM_2が設定されていなかったのでエラーとなっていた。
 make実行前に、gccクロスコンパイラのbinを格納しているフォルダを設定するために、
export GNUARM_2=${GNU_BD}/arm-*-eabi
を実行で解決。
----
【問題】
/bin/sh: line 1: make: command not found
/bin/sh: line 2: make: command not found
【対応】
 MSYSの/binにパスが通っていなかったので、make(の実行ファイル)が見つからず、エラーとなっていた。
 "/etc/sysdepend/tef_em1d/makerules.sysdepend"の45行目に":/usr/bin"を追加(GNUARM_2の場合に、MSYSの/binにパスを通す)することで解決。
----
【問題】
make[1]: /c/gnutools/arm-*-eabi/bin/gcc4arm: Command not found
【対応】
 makefileで使用する"gcc4arm"が存在していなかったためエラーとなっていた。
 "te.Cygwin-i686.common.13.tar.gz"に格納されている"tool/etc/gcc4arm"を"/c/gnutools/arm-*-eabi/bin"にコピーして解決。
----
【問題】
gcc4arm: line 27: /c/gnutools/bin/arm_2-unknown-tkernel-gcc: No such file or directory
【対応】
 環境変数_GNU_CONFIGが設定されていなかったので、デフォルト値が使用されてエラーとなっていた。
 make実行前に、gccクロスコンパイラのプレフィックスを設定するために、
export _GNU_CONFIG=arm-*-eabi
を実行して解決。
("GNUARM_2"は"${GNU_BD}/${_GNU_CONFIG}"でよいことになった)
----
【問題】
"libconv-2.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。"
のメッセージが表示される。
【対応】
 MinGWの/binにパスが通っていなかったので、必要なDLLファイルが見つからずにエラーとなっていた。
 "/etc/sysdepend/tef_em1d/makerules.sysdepend"の45行目に":/c/MinGW/bin"を追加(MinGWの/binにパスを通す)することで解決。
----

■カーネルのビルドで発生した問題
----
【問題】
-o kernel-ram.sys
ld.exe: target elf32-larm-tkernel not found
【対応】
 自前で用意した環境のBFDライブラリには、"elf32-larm-tkernel"の定義が無いためエラーとなっていた。
 "/kernel/sysmain/build/tef_em1d/kernel-ram.lnk"の19行目を、

"elf32-larm-tkernel"→"elf32-littlearm"
"elf32-barm-tkernel"→"elf32-bigarm"

に変更することで対応。
 以下のファイルでも同様の対応が必要。
"/kernel/sysmain/build/tef_em1d/kernel-rom.lnk"
"/config/build/tef_em1d/rominfo.lnk"
"/monitor/tmmain/build/tef_em1d/monitor.lnk"
"/config/launch-ramkernel/build/tef_em1d/rominfo.lnk"
----
【問題】
make: /c/gnutools/bin/arm_2-unknown-tkernel-objcopy: Command not found
【対応】
 makefileで使用されている"objcopy"のプレフィックスが固定になっていたため、実行ファイルが見つからずにエラーとなっていた。
 正しいプレフィクスを指定するために、"/etc/sysdepend/tef_em1d/makerules.sysdepend"の245行目の、
OBJCOPY = $(GNU_BD)/bin/arm_2-unknown-tkernel-objcopy

OBJCOPY = $(GNU_BD)/bin/arm-*-eabi-objcopy
に変更して解決(その上のCPPも同様の修正が必要)。
----
【問題】
/ld.exe: section .ARM.exidx loaded at [700481a0,700481a7] overlaps section .data loaded at [700481a0,700481cf]
【対応】
 2つ上の.lnkファイルの修正により、セクション.ARM.exidxが必要となっていたが、.lnkファイルに記載が無いため、セクション.dataと衝突していたためエラーとなっていた。
 セクション.ARM.exidxを明示的に指定するため、"/kernel/sysmain/build/tef_em1d/kernel-rom.lnk"のセクション".text"の直後(38行目)に、
__ARM_exidx = .;
.ARM.exidx : { *(.ARM.exidx*) }
を追加して対応。
----

|

« T2SPのT-Kernelソースコードのビルド | トップページ | T2SPのT-Kernelソースコードのビルド(eclipseの設定) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/55806/61664046

この記事へのトラックバック一覧です: T2SPのT-Kernelソースコードのビルド(修正の詳細):

« T2SPのT-Kernelソースコードのビルド | トップページ | T2SPのT-Kernelソースコードのビルド(eclipseの設定) »