提案通りジャックアングル、コピーしますこれ問題はここにあります:
一部のコンテンツを画像にコピー/インストールするための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.conf
yoctoレシピに行を追加するか、ファイルを編集して動的ローダーにカスタムパスを追加する方法は?
答え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はライブラリキャッシュを更新します。