python - Yocto:在图像配方中创建符号链接(symbolic link)

标签 python yocto pdb bitbake rootfs

我有一个自定义 Yocto“图像”配方,它使用 IMAGE_INSTALL += "... " 来构建图像,其中还包含 Python 3.5。不幸的是,经常使用的 /usr/bin/pdb 符号链接(symbolic link)没有创建,我的用户希望能够从命令行运行 pdb。所以我想在图像中为此创建一个符号链接(symbolic link)。如果它在目标上运行,它将是以下命令的结果:

ln -s/usr/lib/python3.5/pdb.py/usr/bin/pdb

我知道我可以使用这种构造在图像配方中创建自定义任务:

addtask create_pdb_symlink before do_image
do_create_pdb_symlink () {
    ln -s /usr/lib/python3.5/pdb.py ${D}/usr/bin/pdb
}

但是这不起作用,因为我猜测使用 ${D},并且我认为文件系统此时尚未上演。它会生成此错误:

DEBUG: Executing shell function do_create_pdb_symlink
ln: failed to create symbolic link 
'/home/user/project/build/tmp/work/custom-linux/my-image/1.0-r0/image/usr/bin/pdb': No such file or directory
WARNING: exit code 1 from a shell command.

检查文件系统确认 /home/user/project/build/tmp/work/custom-linux/ 存在,但 /home/user/project/build/tmp/work/custom-linux/my-image 没有。

custom-linux 目录中有一些目录,其中一个名为 rootfs ,看起来非常有用,但我不确定我的任务是否应该是在 my-image 目录下浏览。

所以我的问题是:

  • 这是正确的方法吗?
  • 或者我应该创建一个全新的配方来构建这个单一的符号链接(symbolic link)?
  • 或者我应该创建一个 python3-core.bbappend 来完成此任务?
  • 或者有什么原因导致它不是由 python 配方本身创建的吗?

最佳答案

由于此符号链接(symbolic link)显然与 python3 相关,因此我建议您使用该配方的 bbappend 创建它。配方名称为 python3_(version).bb,因此要捕获所有版本,请命名 bbappend python3_%.bbappend。

这应该有效:

# Create symlink at the end of do_install
do_install_append() {
    ln -sf /usr/lib/python3.5/pdb.py ${D}/usr/bin/pdb
}

# Include the symlink in the python3-debugger package
FILES_${PN}-debugger += "/usr/bin/pdb"

您还可以创建符号链接(symbolic link)作为创建整个 rootfs 的阶段,但在这种情况下我不推荐它。但是,如果您在填充整个 rootfs 时需要做一些事情,请考虑使用 ROOTFS_POSTPROCESS_COMMAND 。例如。把这个放在你的图像食谱中:

my_image_postprocess_function() {
    ln -sf /usr/lib/python3.5/pdb.py ${IMAGE_ROOTFS}/usr/bin/pdb
}

ROOTFS_POSTPROCESS_COMMAND += "my_image_postprocess_function; "

关于python - Yocto:在图像配方中创建符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49525426/

相关文章:

embedded - 我可以获取 USB 上的调试信息吗?

python - 从脚本内部实现与 python -mpdb 相同的任何方法?

python - ipython 0.11 异常仅在退出 pdb 后可见

windows - windows平台有pdb文件,为什么还要map文件?

python - 绘制回归线

python - ValueError : view limit minimum -35738. 3640567 小于 1 并且是无效的 Matplotlib 日期值

linux - 我怎么知道我的 linux 上安装了哪个包管理器

linux - 如何使用 opencv 和 qt 为 Yocto linux 镜像编译程序?

python - PyQt5 - 正确动态调整组件大小和布局组件

python - 如何使用 pyglet 在 Mayavi 动画中播放声音?