web-dev-qa-db-ja.com

Cygwinを使用してCプログラムをコンパイルします。実行エラー

私は、修士課程のコンピューターサイエンスコースに登録しています。コースはCを使用しており、インストラクタは Cygwin を使用して、ウィンドウを使用している場合にプログラムをコンパイルすることを望んでいます。

Cygwin をダウンロードしてインストールし、 GCCコンパイラ をインストールしたことを確認しました。

しかし、私はここからどこへ行くべきかわかりません。基本的なインクルードを持つ単一のソースファイルをコンパイルする必要があります。

#include <stdio.h> 

ファイルがデスクトップにあると仮定しましょう(そうではありませんが、議論のためです)。 bashシェルからデスクトップに移動するにはどうすればよいですか? bashで正しい場所に移動したら、次のように実行するだけです。

gcc myProgram.c -o myProgram

Update:以下に掲載されているさまざまな指示に従って、プログラムをコンパイルすることができました。感謝します。しかし、結果のバイナリを実行すると、次のようになります。エラーが発生しないように、このプログラムをコンパイルまたは実行するにはどうすればよいですか?再びありがとう。

This application has failed to start because cygwin1.dll was not found. Re-installing the application may fix this problem.

15
Frank V

cygwinで起動すると、通常UNIXのように$ HOMEにいます。これはデフォルトでc:/ cygwin/home/$ YOURNAMEにマップされます。したがって、すべてをそこに置くことができます。

また、cygwinから/ cygdrive/c /(たとえば/ cygdrive/c/Documents anb Settings/yourname/Desktop)を介してc:ドライブにアクセスすることもできます。

14

についてのあなたの更新された質問について cygwin1.dllが見つかりません

Cygwinターミナルチェックから、

ls /usr/bin/cygwin1.dll

存在しない場合(疑わしい)、インストールは適切に行われていません。

次に、パスを確認して、

echo $PATH

これにより、:で区切られたパスのリストが得られます。 /usr/binを含まなければなりません。不足していることがわかった場合は、追加してください、

export PATH=/usr/bin:$PATH

最後に、

  • Cygwinターミナル(Cygwinと共にインストールされる小さな緑と黒のアイコン)またはMinTTY(インストールした場合)からCygwinを使用していることを願っています。
  • そして、Cygwinがインストールされていない別のマシンにコンパイル済みEXEを移動していません(その場合、cygwin1.dllをそのマシンに持ち込む必要があります-コンパイル済みEXEと同じフォルダーに保管してください) 。
9
nik

要約すると、CygwinとWindows Vistaを使用してディレクトリに移動し、コードをコンパイルするコマンドがいくつかあります。

  1. Cygwin Shellを開始します。
  2. プロンプトで、cdを使用して適切なディレクトリに変更します。

    $ cd/cygdrive/c/Users/nate/Desktop

  3. lsを使用して、ディレクトリ内のファイルをリストします。

    $ ls

    prog.c

  4. gccコマンドを使用して、このディレクトリ内のファイルをコンパイルします。

    $ gcc prog.c -o prog

  5. エラーが表示されない場合は、結果のプログラムを実行できるはずです。

    $ ./prog

更新:

Cygwin1.dll not found」エラーについては、Nikの答えが好きです。また、 cygwin1.dllに関するこの関連記事が見つかりません をチェックすることもできます。これは、c:\cygwin\bin\をWindows PATHに追加することを提案します。

Windows PATH変数を変更する方法に関する指示 がWindows XPにあり、Vistaでも同様だと思います。

  1. [コントロールパネル]-> [システム]に移動します
  2. システムの詳細設定を選択します
  3. Advancedタブをクリックします
  4. 環境変数をクリックします
  5. システム変数の下でパスエントリを見つけ、編集をクリックします
  6. c:\cygwin\binをリストに追加し、セミコロンで前のアイテムと区別するようにします
4
Nate Kohl

cygwin1.dll not foundエラーに関して、私が少なくとも8年間使用してきた解決策は、マイコンピュータ->プロパティ->詳細->環境の%PATH%の最後にCygwin binディレクトリを追加することです。変数。それらをパスの最後に追加するので、通常の作業では、最後に検索され、競合の可能性が最小限に抑えられます(実際、これまで競合の問題はありませんでした)。

Cygwin Bashシェルを呼び出すと、これらのディレクトリが%PATH%の前に追加されるため、すべてがその環境でも意図したとおりに機能します。

Cygwin Shellで実行していない場合、私の%PATH%は次のとおりです。

Path=c:\opt\Perl\bin; \
     ...
     C:\opt\cygwin\bin; \
     C:\opt\cygwin\usr\bin; \
     C:\opt\cygwin\usr\local\bin;

このように、たとえば、ActiveState PerlのPerlは、Cygwin Shellを使用していないときに最初に検出されますが、Cygwin Shellを使用するとCygwin Perlが検出されます。

4
Sinan Ünür

探す(つまり、cd to)

/cygdrive/c/

通常はC:\


Cygwinの使用Lifehackerの紹介(2006年6月) 、およびこの PhysioNetのbiomedページ もご覧ください。

4
nik

Bashに慣れていない場合は、標準のWindowsコマンド(つまり、DOS)シェルで作業を続けることができます。

これを機能させるには、Windows PATH変数にC:\ cygwin\bin(またはローカルの代替)を追加する必要があります。

1)コマンド(DOS)シェルを開く2)コードの場所にディレクトリを変更する(c :、次にcd path\to\file)3)gcc myProgram.c -o myProgram

Nikの応答で述べたように、「Cygwinの使用」ドキュメントは、さらに学ぶのに最適な場所です。

2
Tim Henigan

Gcc program.c -o program -mno-cygwinを実行するだけで問題なくコンパイルされ、cygwin1.dllをパスに追加する必要がなくなり、実行可能なコンピューターに実行可能ファイルを配布できます。 cygwinがインストールされていて、引き続き実行されます。お役に立てれば

1
HackTalk

WindowsパスC:\src cygwinの下では/cygdrive/c/src

1
devdimi

このファイル(cygwin1.dll)は、qt依存関係と同様のcygwin依存関係です。このファイルと、このようなメッセージエラーに表示される類似ファイルを、「cygwin/bin」からプログラムのフォルダーにコピーする必要があります。 cygwinを持たない別のコンピューター!

0
Maysam Bagheri

Cygwinを使用してCプログラムをコンパイルする

Cygwinでgccコンパイラを使用してプログラムをコンパイルします。

1)Cygwinを起動します

2)次のように入力して、このクラス用に作成したディレクトリに変更します

cd c:/ windows/desktop

3)入力してプログラムをコンパイルします

gcc myProgram.c -o myProgram

コマンドgccは、gccコンパイラーを呼び出してCプログラムをコンパイルします。

0
joe

Cygwin Shell内でファイルを編集する方が良いかもしれません。通常、起動時にはデフォルトのユーザーディレクトリがあります。 「vi somefile.c」または「emacs somefile.c」のようなことをして、シェルからファイルを編集できます。これは、viまたはemacsがcygwinにインストールされていることを前提としています。

デスクトップにファイルする場合は、「/ cygwindrive/c/Documents\and\Settings/Frank/Desktop」に類似したパス(XP上)に移動する必要があります(メモリが正しく機能する場合)。そのパスにcdし、ファイルに対してコマンドを実行するだけです。

0
Jay Atkinson

Cygwinはとてもクールです!他のシステム(Linuxなど)からプログラムをコンパイルできますそしてそれらは動作します。私は通信プログラム、またはWebサーバーについても話します。

ここに1つのトリックがあります。 Windowsファイルエクスプローラーでファイルを表示している場合、bashウィンドウで「cd」と入力し、エクスプローラーのアドレスバーからcygwinウィンドウにドラッグすると、フルパスがコピーされます。ちなみに、これはWindowsコマンドシェルでも機能します。

また、「cd/cygdrive/c」は正式なパスですが、「cd c:」もショートカットとして受け入れます。残りのパスにドラッグする前に、これを行う必要がある場合があります。

Stdio.hファイルは、従来のシステムと同様に自動的に検出されるはずです。

0
gbarry