1. ホーム
  2. リナックス

cygwin must touch 問題: そのようなファイルやディレクトリはありません。

2022-03-01 15:25:36

この問題には本当に1日2日悩まされ、ネットの情報に従って様々な情報を確認しましたが、現在の結論は同じです...。パスマッピングの問題...。

私が最近行ったGoogle Protocol Bufferの研究を例にとると、cygwinを使用して拡張子helloworld.protoを持つ.protoファイルをコンパイルする必要がありました。

helloworld.protoのディレクトリです。C:\UsersPotterDocuments³³workProtocol Bufferprotobuf-2.4.1³³src (put in my directory)

cygwinを直接開いて、次のコマンドでコンパイルしてあげます。以下のように。

赤線で引いたパスは確かに正しいし、cdで直接入れることもできるのですが、No such file or directoryと表示されるのはなぜでしょうか?

よく見ると、上にPotter@Potter-PCを囲んでいますね~、そう、これが問題なんです。

cygwinが入力する必要があるのは相対パスなのですが......。

パスを完成させると次のようになります。/home/Potter/cygdrive/c/Users/Potter/Documents/work/Protocol Buffer/protobuf-2.4.1/src/ That's it

実は、この前の/home/Potterが、cygwinでエミュレートしたlinuxのルートなんです...。

ここまで言っておいてなんですが、直接使うにはどうしたらいいのでしょうか? 

解決策1

 helloworld.protoのルートにcdして実行。

プロンプトは出ず、基本的にコンパイルに成功...。

ノーミスです。このディレクトリにないファイルをインクルードしたらどうなりますか?

解決策2

別のディスクにある場合、cygwinがどのように書き込んでいるのかわからないので、ご存知の方は教えてください。

入力は以下の通りです。

OK正常に生成する〜実際には、メソッド2とメソッド1は同じですが、私が説明したいのは、まず同じディスクのルートディレクトリにcdを、このような私のcディスクとして...です。そして、それが簡単にコンパイルするために、このように記述します。 

質問です。cygwinで参照される異なるディスクはどのように入力するのですか?