crosstool-ngを使用してARM Cortex-A8用のクロスコンパイラを構築しましたが、最も単純なプログラムのコンパイルにはいくつかの問題があります。
コンパイルしてみてくださいtest.h
:
$ arm-linux-gnueabihf-gcc -o prog test.c
test.c:1:20: fatal error: stdlib.h: No such file or directory
#include <stdlib.h>
^
compilation terminated.
特定のディレクトリにツールチェーンを作成し、それを私のホームディレクトリの別のフォルダにコピーしました。このツールチェーンは、他の人がアプリケーションを開発するために使用する必要があるため、より「合理的な」パスに移行しました。
その後、ツールチェーンを使用して元々生成されたパスから直接同じコードをコンパイルしてみましたが、正常に動作しました。私はこれがターゲットsysrootへのパスに関連していると思っていましたが、確認した後、両方のパスが--print-sysroot
ツールチェーンバイナリの現在の場所と一致しているようです。 (注:$PATH
別のディレクトリの前にコピーされたツールチェーンへのパスを追加します。)
$ /home/guilherme/Toolchain/bin/arm-linux-gnueabihf-gcc --print-sysroot # Copy
/home/guilherme/Toolchain/bin/../arm-cortex_a8-linux-gnueabihf/sysroot
$ /home/guilherme/Development/toolchain/tools/arm-cortex_a8-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc --print-sysroot # Original
/home/guilherme/Development/toolchain/tools/arm-cortex_a8-linux-gnueabihf/arm-cortex_a8-linux-gnueabihf/sysroot
この問題の助けが必要ですか?別のフォルダ/マシンに移動/コピーできるツールチェーンを作成するオプションはct-gnにありますか?
答え1
問題が何であるかをご覧ください。
make headers_install ARCH=arm HDR_INSTALL_PATH=${TOOLCHAIN_SYSROOT}/usr
ツールチェーンヘッダを更新するために使用します。ただし、コピーされたヘッダー以外のすべてのヘッダーを${KERNEL_PATH}/include/linux
「${TOOLCHAIN_SYSROOT}/usr
クリーンアップ」するために、一部(すべてではない)ヘッダーをコピーして、stdio.h、math.h、およびその他の「重要ではない」ヘッダーを削除します。