【发布时间】:2023-03-14 15:25:01
【问题描述】:
我正在使用 linux 开发嵌入式应用程序。我有一个 HOST linux 发行版(fedora)和一个 TARGET linux 发行版(不确定它是什么,但没关系)。
TARGET 文件系统是 HOST 文件系统中的一个文件夹。例如,TARGET 通过 nfs 从 HOST 文件系统上的 /home/paul/target/rootfs 引导,其中是通常的 linux 文件结构。
我正在向目标添加一个守护程序。我在 HOST 上交叉编译它并使用 make 目标(make install)将文件复制到 TARGET 文件系统并设置守护程序以运行。我复制
- 守护进程二进制文件
- 一些库和启动脚本
- 一些符号链接(symlinks)有助于自动启动守护进程
正是后者给我带来了问题。为了在启动时自动启动,我需要在 /etc/rc.d/rc0.d 的 TARGET fs 中创建到 rc6.d 的符号链接,它指向我的启动脚本 /etc/rc.d/init/d /mdns。
问题是我需要在主机上创建这些符号链接,但供目标使用。所以它们不能指向 HOST 机器看到的完整路径,它们需要指向 TARGET 运行时看到的路径。
例如
我需要在 /home/paul/target/rootfs/etc/rc0.d 中创建一个符号链接,但符号链接需要称为 K16mdns 并指向 /etc/init.d/mdns 而不是 /home/paul/target /rootfs/etc/init.d/mdns
如何使用 ln 命令来执行此操作?我需要为 ln 指定 3 件事(除了 -s 标志):- 链接文件名、链接目标和创建链接的目录。我在 ln 手册页中没有看到这种组合。
它似乎总是最终要么弄乱主机上的 /etc/rc.d 目录,要么使用仅与主机相关的路径在目标 fs 中创建符号链接,这显然失败了(目标没有路径 /home/保罗/目标/rootfs/etc/init.d/mdns)。
当我在 TARGETs 命令行上手动创建符号链接时,一切都很好,但显然这不是一个实用的解决方案。
提前谢谢你。
【问题讨论】:
标签: linux embedded symlink embedded-linux