如何编辑 yocto 配方中的“/etc/ld.so.conf”?

如何编辑 yocto 配方中的“/etc/ld.so.conf”?

正如建议的扎克·安格,我复制问题在这里:

我有一个 yocto 食谱,其中我将一些内容复制/安装到图像中。之后,我想在文件中添加一行/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 魔法会更新你的库缓存。

相关内容