初心者はゼロからubootソースコードをコンパイルし(一)、コンパイル環境を構築し、簡単なコンパイルテストを行う.

3741 ワード

1、u-boot-2018-11のソースコードをダウンロードし、解凍する。


2、私はS 5 PV 210チップをコンパイルするので、CROTEX-A 8アーキテクチャ


centosシステム、Linux環境のため、次のツールチェーン(ダウンロード)を選択します.
gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz
解凍命令は、2つのステップに分けて実行されます.
xz -d gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz
tar -xvf gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi.tar

3、ツールチェーンをLinuxの環境変数に追加する


①まず指令pwdでツールチェーンの解凍経路下のbinの経路を取得し、私が得た経路:
/home/suozhang/linux/gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi/bin

②コマンドvi~/.bashrcは、~すなわちワイルドカードを用いて、現在のユーザ$HOMEディレクトリの下にあるbashrcファイル、すなわち環境変数ファイルを表す
export PATH=$PATH:/home/suozhang/linux/gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi/bin

ESCは編集モードを終了し、:wqは終了を保存すればよい.
③命令source~/.bashrcはすぐにこの環境変数ファイルを有効にします
④現在のbinディレクトリを終了し、命令arm-linux-gnueabi-gcc-vを使用してバージョン番号テストが使用可能かどうかを確認する

4、ubootルートディレクトリに入り、Makefileを修正し、コンパイル先のアーキテクチャとツールチェーン名を追加する


(手順3でコンパイルツールチェーンのパスを環境変数に追加しない場合は、ここでパスを追加しても構いません)
vi Makefile

コンパイルターゲットアーキテクチャの追加&ツールチェーン名の追加
ARCH = arm
CROSS_COMPILE = arm-linux-gnueabi-

5、使用指令:make s 5 p_goni_defconfig、次のエラーが見つかりました。

make s5p_goni_defconfig

1、/bin/sh: bison: command not found
解決方法:
yum install bison   sudo apt-get install bison

2、/bin/sh: flex: command not found
解決方法:
yum install flex / sudo apt-get install flex

3、make s5p_goni_defconfig、再コンパイル、成功
[root@VM_0_3_centos u-boot-2018.11]# make s5p_goni_defconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  YACC    scripts/kconfig/zconf.tab.c
  LEX     scripts/kconfig/zconf.lex.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#


まとめ:1、u-boot-2018.11/configs/s 5 p_goni_defconfigは、開発ボードgoniのデフォルトプロファイル2、開発ボードgoni関連ファイル、パス(u-boot-2018.11/board/samsung/goni)3、make s 5 p_goni_defconfig、u-boot-2018.11/configs/s 5 p_による操作goni_defconfigファイルとu-boot-2018.11/Kconfigファイルを比較する、ファイルを生成する.config     4、.configはubootのコンパイルプロファイルで、中にはubootが運行するチップアーキテクチャ、開発ボード名、チップ名、各種機能剪断など5、2019年2月21日19:05:12

6、命令makeを呼び出してコンパイルする

[root@VM_0_3_centos u-boot-2018.11]# make
scripts/kconfig/conf  --syncconfig Kconfig
  CHK     include/config.h
  UPD     include/config.h
  CFG     u-boot.cfg
  #  N 
  OBJCOPY u-boot.srec
  OBJCOPY u-boot-nodtb.bin
  DTC     arch/arm/dts/s5pc1xx-goni.dtb
make[2]: `arch/arm/dts/s5pc1xx-goni.dtb' is up to date.
  SHIPPED dts/dt.dtb
  FDTGREP dts/dt-spl.dtb
  CAT     u-boot-dtb.bin
  COPY    u-boot.bin
  SYM     u-boot.sym
  COPY    u-boot.dtb
  CHK     include/config.h
  CFG     u-boot.cfg
  CFGCHK  u-boot.cfg
[root@VM_0_3_centos u-boot-2018.11]#

参照先:https://blog.csdn.net/qq_16777851/article/details/81543373