0

ここには、gcc-3.3でコンパイルする必要のあるコードを持っている人がいます。CentOS5.2があります。

makeファイルでコンパイルすると、リンク中に失敗し、すでにインストールされているgcc-3.4では動作しないためだと言われています。それを実行するために変更するように彼らに伝える必要があるものはありますか、それともrpmとしてgcc-3.3を見つけてインストールすることは可能ですか?3.3はCentOS5.2インストールメディアにないので、最初はgcc-3.3とgcc-3.4の間にどれほど大きな違いがあるのか​​を尋ねていると思います。

または、compat-gcc-3.4もあるディストリビューションにcompat-gcc-3.2をインストールすることはできますか?

追加した:

エラーは

/usr/include/c++/3.2.3/bits/stl_alloc.h:248: undefined reference to std::__default_alloc_template<true, 0>::deallocate(void *, unsigned int)

そのため、間違ったヘッダーやライブラリがリンクされているのではないかと疑っています。compat-gcc-32をインストールすることにより、コードはコンパイルおよびリンクされますが、文字列操作を実行しようとするとsegfaultが発生します。壊れたものへの最初のアクセスは、たまたま何らかの文字列操作である可能性があります。

4

2 に答える 2

2

gcc-3.3 と 3.4の内部的な違いは大きく、gcc-3.4 は C/C++ フロント エンドを完全に再実装しています。

合理的に標準に準拠したプログラムの違いは存在しないはずです。3.3 でビルドされ、3.4 でビルドに失敗するコードは壊れている可能性が高く、開発者にそのコードを修正してもらうのが最善の策です。

それができない場合は、ソースから GCC-3.3 をビルドしてください:

tar xzf gcc-3.3.tar.gz && cd gcc-3.3 &&
./configure --prefix /usr/local/gcc-3.3 --enable-languages=c,c++ &&
make && make install

次に、「壊れた」コードをビルドしますPATH=/usr/local/gcc-3.3/bin:$PATH make

于 2009-11-18T21:46:52.267 に答える
0

CentOS インストールで、既存の GCC 3.4 RPM と一緒にインストールできる GCC 3.3 用の RPM が見つかるとは思えません。RPMデータベースで異なるGCCバージョンをいじるのを避けるために、おそらくソースからGCC 3.3をインストールします。

于 2009-11-18T21:36:29.737 に答える