3

Linux を使用して組み込みアプリケーションを開発しています。HOST Linux ディストリビューション (fedora) と TARGET Linux ディストリビューションがあります (それが何であるかはわかりませんが、問題ではありません)。

TARGET ファイル システムは、HOST ファイル システム内のフォルダーです。たとえば、TARGET は、HOST ファイルシステムの /home/paul/target/rootfs から nfs 経由で起動します。その内部には、通常の Linux ファイル構造があります。

TARGET にデーモン プログラムを追加しています。HOSTでクロスコンパイルし、makeターゲット(make install)を使用してファイルをTARGETファイルシステムにコピーし、実行するデーモンをセットアップしています。コピーします

  • デーモンのバイナリ
  • いくつかのライブラリと起動スクリプト
  • デーモンの自動起動を容易にするためのいくつかのシンボリック リンク (シンボリック リンク)

私に問題を与えているのはこれらの後者です。起動時に自動起動するには、/etc/rc.d/rc0.d から rc6.d までの TARGET ファイルにシンボリックリンクを作成する必要があります。これは、起動スクリプト /etc/rc.d/init/d を指します。 /mdns.

問題は、HOST マシンでこれらのシンボリック リンクを作成する必要があるが、TARGET で使用する必要があることです。そのため、ホスト マシンから見たフル パスを指すことはできず、TARGET の実行時に見られるパスを指す必要があります。

たとえば

/home/paul/target/rootfs/etc/rc0.d にシンボリック リンクを作成する必要がありますが、シンボリック リンクは K16mdns と呼ばれ、/home/paul/target/rootfs/ ではなく /etc/init.d/mdns を指す必要があります。 etc/init.d/mdns

ln コマンドを使用してこれを行うにはどうすればよいですか? ln に 3 つのことを指定する必要があります (-s フラグ以外に):- リンク ファイル名、リンクのターゲット、およびリンクを作成するディレクトリ。この組み合わせは ln のマニュアル ページにありません。

HOST の /etc/rc.d ディレクトリをめちゃくちゃにするか、明らかに失敗する HOST にのみ関連するパスを使用して TARGET fs にシンボリックリンクを作成することになるようです (TARGET にはパス /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 に答える