YoctoレシピファイルからCFLAGSをコンパイルする

YoctoレシピファイルからCFLAGSをコンパイルする

質問:acファイルに2つのマクロを追加し、2つのコンピュータがあります。 Yoctoレシピを使用して、特定のマシン用の特定のマクロでコードを書きたいです。

問題をサブ部分に分割します。 こんにちはc

// Simple hello.c program
#include<stdio.h>

void main(){
    printf("Hello World!\n");

    //Introducing Macro 1 -- abc

    #ifdef abc
    printf("Day 1\n");
    #endif

    //Introducing Macro 2 -- xyz

    #ifdef xyz
    printf("Day 2\n");
    #endif
}

予想および観察された出力:

gcc hello.c -o hello
./hello
Hello World!

gcc hello.c -Dabc -o test1
./test1
Hello World!
Day 1 

gcc hello.c -Dxyz -o test2
./test2
Hello World!
Day 2

ファイルコンテンツの作成:

obj-m := hello.o

SRC := ${shell pwd}

CFLAGS += -Dabc

all:
    ${MAKE} -C M=${SRC} ${CFLAGS}

test_install:
    ${MAKE} -C M=${SRC} ${CFLAGS} test_install

clean:
    rm -rf *.o

上記のMakefileの内容はcat -e -t Makefile。各行の終わりで$で正しく終了します。私はMAKEを使用しているので、gccコンパイラがあります。 Makefileでコードがそれに応じてコンパイルされたら、別のCFLAGS = "-Dxyz"を処理するためにMakefileにifeq条件を追加できるようにCFLAGS = "-Dabc"をハードコードしました。

レシピファイルの内容:

S = "${WORKDIR}/helloworld/hello"

COMPATIBLE_MACHINE = "oldmachine|newmachine"
EXTRA_OEMAKE_oldmachine += "CFLAGS=-Dabc"
EXTRA_OEMAKE_newmachine += "CFLAGS=-Dxyz"

do_compile(){
    ${EXTRA_OEMAKE}_${MACHINE}
}

do_compile の基本機能は oe_runmake を実行することです。これは、渡したい CFLAGS を選択すると仮定します。

tmp / work / ...フォルダの下のlog.do_compileの内容を確認しましたが、CFLAGSが使用されていることがわかりませんでした。

私も上記のレシピを次のように書き直しました。

do_compile_append_oldmachine(){
     CFLAGS="-Dabc"
}

do_compile_append_newmachine(){
     CFLAGS="-Dxyz" #Also tried passing EXTRA_OEMAKE_MACHINE as above
}

これにより、tmp/work/.. ディレクトリにある log.do_compile ファイルを確認すると、CFLAGS 部分が見つかりません。

特定のアーキテクチャに基づいてコードをコンパイルするためにCFLAGSをどのように使用できますか?

追加の詳細:

特定のメタレイヤーの下にこのようなディレクトリがあります。

こんにちは世界

  • こんにちはc
  • こんにちは。o
  • ファイルの生成

注:CFLAGSは表現力が低いため、このタグでは追加できません。

関連情報