yoctoレシピで「/etc/ld.so.conf」を編集するには?

yoctoレシピで「/etc/ld.so.conf」を編集するには?

提案通りジャックアングル、コピーしますこれ問題はここにあります:

一部のコンテンツを画像にコピー/インストールするためのyoctレシピがあります。次に、/etc/ld.so.confダイナミックローダーが自分のライブラリファイルを見つけることができるように、次の行をファイルに追加したいと思います。

do_install(){
  # install some stuff...

  echo /opt/myStuff/lib >> /etc/ld.so.conf
  ldconfig
}

ビルドプロセス中にビルドプロセスを中断する次のエラーが発生します。

...
| DEBUG: Python function extend_recipe_sysroot finished
| DEBUG: Executing shell function do_install
| /home/debian/Devel/myYocto/build/tmp/work/myTarget/myRecipe/1.0-r0/temp/run.do_install.3176: 203: cannot create /etc/ld.so.conf: Permission denied
| WARNING: exit code 2 from a shell command.
ERROR: Task (/home/debian/Devel/myYocto/poky/meta-myLayer/myRecipe/myRecipe.bb:do_install) failed with exit code '1'

今私の質問は:/etc/ld.so.confyoctoレシピに行を追加するか、ファイルを編集して動的ローダーにカスタムパスを追加する方法は?

答え1

/etc/ld.so.confターゲットシステムに追加したいと思いますが、

echo /opt/myStuff/lib >> /etc/ld.so.conf

このファイルはビルドホストで変更されます。幸い、これによりエラーが発生します。

ターゲット rootfs は$Dなのでファイルは unter になるが$D/etc/ld.so.confより一般的にはファイルが にある必要は/etcないので${D}${sysconfdir}/ld.so.conf

do_install()ただし、異なる領収書が別々に生成され、ld.so.conf競合が発生するため、これを実行できない問題に直面します。したがって、以下を使用することをお勧めしますld.so.conf.d

install -d ${D}${sysconfdir}/ld.so.conf.d/
echo /opt/myStuff/lib >> ${D}${sysconfdir}/ld.so.conf.d/myStuff.conf

または、より良い方法は、そのファイルをレシピに入れて

install -m 0755 ${WORKDIR}/myStuff.conf ${D}${sysconfdir}/ld.so.conf.d/

また、ldconfigホストシステムで実行しないでください。とにかく、いくつかのYocto Magicはライブラリキャッシュを更新します。

関連情報