第3章最初のAPPをコンパイルする:こんにちは
1.1 Clang、LLVM、GCCの概要
UbuntuでPC用のプログラムをコンパイルするときに、次のコマンドを実行します。
gcc -o hello hello.c
UbuntuでARMボード用のプログラムをコンパイルするときに、次のコマンドを実行します(gccプレフィックスは異なる場合があります)。
arm-linux-gcc -o hello hello.c
Liteos-aでは、LLVMを使用してプログラムをコンパイルします。LLVMの本来の意味は、低レベルの仮想マシンである「低レベルの仮想マシン」です。しかし、現在ではコンパイラ(コンパイラ)のフレームワークシステムに発展しています。簡単に言えば、LLVMはGCCを置き換えることができ、LLVMは拡張が容易で、より優れたパフォーマンスを提供できます。
LLVMのフレームワークは次のとおりです
。Clangは「フロントエンド」(フロントエンド)であり、字句解析、文法解析を実行するために使用されます。簡単に言えば、構文エラーのチェック、ヘッダーファイルのインクルード、マクロの展開です。
中央にはオプティマイザがあり、フロントエンドによって分析されたコードをLLVM IR(中間表現)に変換します。IRはマシンとは関係なく、一連の最適化を簡単に追加できます。
最適化後に得られたIRは、「Backend」により各種マシンのマシンコードに変換されます。
上記のコンテンツはインターネットからのものですが、ClangやLLVMについてはあまり理解していないので、簡単に紹介しておきます。
1.2 helloプログラムをコンパイルする
Clangを使用する場合、多くのパラメーターを指定する必要があります。プログラムをコンパイルするCPUのタイプ(ARMまたはRisc-V)、CPUアーキテクチャー(cortex A7またはcortex A15)とは何か、ヘッダーファイル/ライブラリファイルはどこにありますか?
Liteos-a用のプログラムをコンパイルするとき、helloプログラムを例にとると、次のコマンドを実行できます。
cd /home/book/openharmony_for_imx6ull/apps/hello
clang -target arm-liteos --sysroot=/home/book/openharmony/prebuilts/lite/sysroot/ \
-o hello hello.c
上記のコマンドのsysrootパラメーターでは、標準ヘッダーファイルとライブラリファイルのディレクトリが指定されています。
GCCのような「-I」および「-L」パラメーターを使用して、他のヘッダーファイルとライブラリファイルのディレクトリを指定することもできます。たとえば、このプログラムは後でコンパイルされます。
cd /home/book/openharmony_for_imx6ull/apps/freetype
clang -target arm-liteos --sysroot=/home/book/openharmony/prebuilts/lite/sysroot/ \
-I /home/book/openharmony/third_party/freetype/include \
-L /home/book/openharmony/out/ipcamera_hi3518ev300/libs/usr \
-lfreetype \
-o show_line show_line.c
1.3 helloプログラムをrootfsに置く
helloプログラムをコンパイルしたら、それをrootfsディレクトリのbinレターに配置できます。次に例を示します。
cd /home/book/openharmony_for_imx6ull/apps/hello
cp hello /home/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/bin
次に、rootfs.jffs2を再作成し、次のコマンドを実行します。
> cd /home/book/openharmony/kernel/liteos_a/out/imx6ull/ mkfs.jffs2 -s
> 0x10000 -e 0x10000 -d rootfs -o rootfs.jffs2
helloプログラムが/ home / book / apps / helloディレクトリにあるとすると、操作のスクリーンショットは次のようになります。
取得したrootfs.jffs2を書き込みツールのfilesディレクトリに配置すると、書き込みツールで起動できます。
次の図に示すように、コマンドラインを入力した後、helloプログラムを実行できます。
注:「./bin/ hello "、絶対パス" / bin / hello "は使用できません
全文ダウンロード
テクニカルエクスチェンジグループ(
Hongmeng Development / Linux / Embedded / Driver / Data Download)QQ Group:869222007