3

我正在使用 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。

问题是我需要在主机上创建这些符号链接,但供目标使用。因此它们不能指向主机机器所见的完整路径,它们需要指向目标运行时所见的路径。

所以例如

我需要在 /home/paul/target/rootfs/etc/rc0.d 中创建一个符号链接,但符号链接需要称为 K16mdns 并指向 /etc/init.d/mdns 而不是 /home/paul/target/rootfs/等/init.d/mdns

如何使用 ln 命令来执行此操作?我需要为 ln 指定 3 件事(除了 -s 标志):- 链接文件名、链接目标和创建链接的目录。我在 ln 手册页中没有看到这种组合。

它似乎总是最终要么弄乱主机上的 /etc/rc.d 目录,要么使用仅与主机相关的路径在 TARGET fs 中创建符号链接,显然失败(目标没有路径 /home/paul/target /rootfs/etc/init.d/mdns)。

当我在 TARGETs 命令行上手动创建符号链接时,一切都很好,但显然这不是一个实用的解决方案。

先感谢您。

4

1 回答 1

7

符号链接时应该使用相对路径,例如

cd /home/paul/target/rootfs/etc/init.d
ln -s mndns ../rc0.d/K16mdns
于 2012-08-29T12:45:26.633 回答