0

現在、cygwin に 2 つの gcc がインストールされています。i686-w64-mingw32-gcc-4.5.3.exe と cygwin gcc です。わかりやすくするために、私が何をしたかを示します。

$ ls -al /usr/bin/gcc*
lrwxrwxrwx 1 ユーザーなし 16 年 8 月 21 日 13:15 /usr/bin/gcc.exe -> /etc/alternatives/gcc
-rwxr-xr-x 2 ユーザー なし 94741 2009 年 2 月 25 日 /usr/bin/gcc-3.exe

$ ls -al /etc/alternatives/gcc*
lrwxrwxrwx 1 ユーザーなし 18 8 月 16 13:15 /etc/alternatives/gcc -> /usr/bin/gcc-3.exe

$ rm /etc/alternatives/gcc

$ ln -S /usr/bin/i686-w64-mingw32-gcc-4.5.3.exe /etc/alternatives/gcc

$ gcc -v
組み込みの仕様を使用します。
COLLECT_GCC=gcc
ターゲット: i686-w64-mingw32
構成: /cygdrive/i/szsz/tmpp/32gcc/mingw64-i686-gcc-4.5.3-6/src/gcc-4.5.3/configure --srcdir=/cygdrive/i/szsz/tmpp/32gcc/ mingw64-i686-gcc-4.5.3-6/src/gcc-4.5.3 --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin - -libexecdir=/usr/lib --datadir=/usr/share --localstatedir=/var --sysconfdir=/etc --datarootdir=/usr/share --docdir=/usr/share/doc/mingw64-i686- gcc -C --build=i686-pc-cygwin --host=i686-pc-cygwin --target=i686-w64-mingw32 --with-sysroot=/usr/i686-w64-mingw32/sys-root -- with-build-sysroot=/usr/i686-w64-mingw32/sys-root --disable-multilib --disable-win32-registry --enable-languages=c,ada,c++,fortran,objc,obj-c++ - -enable-full-dynamic-string --enable-libgomp --enable-sjlj-exceptions --enable-version-specific-runtime-libs --with-dwarf2 --enable-decimal-float=bid --enable-lto
スレッドモデル: win32
gcc バージョン 4.5.3 (GCC)

$ gcc -o テスト test.c
gcc: 'cc1' を実行しようとしてエラーが発生しました: execvp: そのようなファイルまたはディレクトリはありません

$ /usr/bin/i686-w64-mingw32-gcc.exe -o テスト test.c

$

gcc を動作させるにはどうすればよいですか?

4

2 に答える 2

-1

/usr/bin正しいバージョンの GCC を指すようにgcc シンボリック リンクを変更する必要があると思います。または、 を編集PATHしての/etc/alternatives前に来るようにすることもできます/usr/binが、設定によっては、意図しない副作用が生じる可能性があります。

于 2012-08-16T20:43:05.457 に答える
-3

ネイティブの MinGW-w64 GCC が必要な場合は、ネイティブの Windows バージョンのコンパイラを使用して cmd から呼び出すか、MSYS が必要な場合に呼び出します。そうでない場合は、Cygwin から Windows へのクロス コンパイラを使用し、Makefile/CMakeLists.txt/configure スクリプトでプレフィックスをエンコードします。

Cygwin != Windows を思い出してください。あなたがやっているのはクロスコンパイルです。GCC の世界では、プレフィックス付きのバイナリを呼び出すことによって行われます。

于 2012-08-17T09:38:20.483 に答える