2017-11-09 16 views
0

私は別のディレクトリに4つのファイルを持っています。Yoctoマルチファイルコンパイル

1. /home/Linux/NXP/XYZ/Embedded/Read/read.c 
2. /home/Linux/NXP/XYZ/Embedded/main/mainfun.c 
3. /home/Linux/NXP/XYZ/Embedded/write/write.c 
4. /home/Linux/NXP/XYZ/Embedded/config/config.c 

と.BBファイルがmainfun.ciから

"/home/Linux/NXP/yocto/jethro/yocto/source/meta-mylayer/recipes-app/mainfun/mainfun.bb" 

に位置していますがwrite.cの内側に存在しているfuncionのdefination異なる関数を呼び出し、CONFIG.C、read.c

ています私はyoctoを使用して単一のファイルのコンパイルに遭遇するだけですので、どのように私はコンパイルし、exicutable "XYZ_app"を生成することができます。

ここで私は私が書かれている.BBファイルを添付けど

DESCRIPTION = "multiple file compilation" 
PR = "r0" 
LICENSE = "CLOSED" 

SRC_URI += "file://home/Linux/NXP/XYZ/Embedded/ \ 
      " 

S = "${WORKDIR}" 

do_compile() { 
${CC} ${CFLAGS} ${LDFLAGS} --static -c ${WORKDIR}}/home/Linux/NXP/XYZ/Embedded/read/read.c 
${CC} ${CFLAGS} ${LDFLAGS} --static -c ${WORKDIR}}/home/Linux/NXP/XYZ/Embedded/write/write.c 
${CC} ${CFLAGS} ${LDFLAGS} --static -c ${WORKDIR}}/home/Linux/NXP/XYZ/Embedded/conf/conf.c 
${CC} ${CFLAGS} ${LDFLAGS} --static -c ${WORKDIR}}/home/Linux/NXP/XYZ/Embedded/mainfun/mainfun.c 
    ${CC} ${CFLAGS} ${LDFLAGS} --static ${WORKDIR} /home/Linux/NXP/XYZ/Embedded/Read/read.o /home/Linux/NXP/XYZ/Embedded/write/write.o /home/Linux/NXP/XYZ/Embedded/conf/conf.o /home/Linux/NXP/XYZ/Embedded/mainfun/mainfun.o -c XYZ_App 
} 

do_install() { 

    install -m 0755 -d ${D}${bindir} 
    install -m 0755 ${S}/XYZ_App ${D}${bindir} 
} 

よろしく、 Bhargav Jayswal

答えて

1

を働いていないレシピで、ソースファイルを直接コンパイルは最高の状態でテスト/緊急ソリューションです。わずかに進んだだけのものでも、正しい方法はあらゆる種類のビルドシステムを使うことです。

直接いるOpenEmbeddedでサポートされているものは、(とりわけ)を含む

  • のMakefile
  • Autotool群
  • CMakeのは

ここでそれらのシステムのためのレシピのカップルのための例である:http://www.yoctoproject.org/docs/2.4/dev-manual/dev-manual.html#new-recipe-testing-examples

ソースを正しく詰め込むことでビットブレークプロセス全体を呼び出すことなくコンパイルとアプリケーションを簡単にテストする方法。それらのすべてに賛否両論がありますので、さらに深く掘り下げたいと思うかもしれません。

https://developer.gnome.org/anjuta-build-tutorial/stable/create-autotools.html.en

代替はGNU helloを見ている、とも対応するレシピ:autotoolsのに開始するために、これは良いことのようです。

+0

親愛なるLetoThe2nd、お返事ありがとうございました。私は既にすべてのドキュメントを閲覧しています。また、標準的な方法に従うことが常に優れていることに同意します。好奇心のせいで、私はいつも考えられる方法を知ろうとしています。あなたは私の質問のための例を共有することができますので、私にとってより明確になります。 –

+0

私はそれを自分のために時間の無駄だと考えているので、実際には私はそれを完全に解決するつもりはありません。しかし、いくつかの指針:あなたは実際にレシピでソースを保持したい場合は、それらはまた、ファイルディレクトリの中でそれがマシン上の任意のパスではなく、隣にある必要があります。リンクするステップでは、あなたのファイルシステムのどこかに絶対的なパターンを与えています。これはできるだけ壊れそうです。 – LetoThe2nd