2

さまざまな環境で相対パスがどのように解釈されるかについて質問があります。Makefile と gcc を使用してLinuxでコンパイルするCコードがあり、ソースファイルに次のものが含まれている場合:

fopen(“../../xyz.ctl”, ”r”); 

このファイルはどこにありますか。または言い換えれば、私が持っている場合

fopen(“xyz.ctl” , ”r”); 

コンパイラは xyz.ctl を次のフォルダと同じフォルダで探しますか?

a.) このステートメント fopen を含むソース ファイルはどこにありますか?

b.) makefile はどこにありますか?

c.) Linux 実行可能ファイルはどこに生成されますか?

MSVC のすべての相対パスは、*.dsw (ワークスペース ファイル) があるフォルダーからのものであることを知っています。RVDS 環境では、実行可能ファイル *.axf が生成されるフォルダーから開始します。

-広告

4

2 に答える 2

5

Makefile は、fopen() を含むコードをコンパイルする gcc を呼び出します。fopen() は、新しくコンパイルされたコードを実行するときに呼び出されます。パスは、プログラムを起動したときの現在の作業ディレクトリからの相対パスです。

于 2008-12-04T10:37:23.837 に答える
1

Unix ツールによってコンパイルされたコード内のパスは、最終的な実行可能ファイルが実行されるパスに対して相対的です。

gcc は、ユーザーが何を行っているかを理解しようとせず、アプリケーションにコンパイルするパスを分析しません。

私の知る限り、Windows の copy コマンドは、動作するアプリケーションのパスを「修正」しようとする唯一のコマンドです。(ストーリー: フロッピー ディスクに VB アプリがあり、それを C: にコピーすると、ファイルのチェックサムが変更されていました。アプリをディスクにコピーすると、アプリの "C:\" が " A:\" またはその逆)。

于 2008-12-04T10:35:05.590 に答える