Top >
Programming Language >
C/C++ > Linux 64bit環境でのC/C++ 32bitコンパイルで「-lstdc++ が見つかりません」「-lgcc_s が見つかりません」というエラーになる場合の対処
Linux 64bit環境でのC/C++ 32bitコンパイルで「-lstdc++ が見つかりません」「-lgcc_s が見つかりません」というエラーになる場合の対処
Linux 64bit環境でのC/C++ 32bitコンパイルで「-lstdc++ が見つかりません」「-lgcc_s が見つかりません」というエラーになる場合の対処方法を紹介します。
1.問題点
次のようなC/C++コードを書きました。
#include <stdio.h>
void hello_world2(void) {
printf( "Hello World2!\n" );
}
void hello_world1(void) {
printf( "Hello World1!\n" );
hello_world2();
}
int main(void) {
hello_world1();
return 0;
}
このCコードを32bitでコンパイルしたところ、下記のエラーが発生しました。
% gcc -m32 sample.c
/usr/bin/ld: 互換性のないを /usr/lib/gcc/x86_64-redhat-linux/4.8.5/libgcc_s.so スキップしました (-lgcc_s を探索している時)
/usr/bin/ld: -lgcc_s が見つかりません
collect2: エラー: ld はステータス 1 で終了しました
C++コードも同様のエラーが発生しました。
% g++ -m32 sample.cpp
/usr/bin/ld: 互換性のないを /usr/lib/gcc/x86_64-redhat-linux/4.8.5/libstdc++.so スキップしました (-lstdc++ を探索している時)
/usr/bin/ld: -lstdc++ が見つかりません
/usr/bin/ld: 互換性のないを /usr/lib/gcc/x86_64-redhat-linux/4.8.5/libgcc_s.so スキップしました (-lgcc_s を探索している時)
/usr/bin/ld: -lgcc_s が見つかりません
collect2: エラー: ld はステータス 1 で終了しました
64bitであれば正常にコンパイルできます。
ということで、Linux 64bit環境でのC/C++ 32bitコンパイルで「-lstdc++ が見つかりません」「-lgcc_s が見つかりません」というエラーになる場合の対処方法を紹介します。
2.原因と対処
rpmコマンドでgccがインストールされているパッケージを調べてみました。
# rpm -qa | grep gcc
gcc-c++-4.8.5-4.el7.x86_64
gcc-4.8.5-4.el7.x86_64
libgcc-4.8.5-4.el7.x86_64
出力結果より、インストールされているパッケージは「x86_64」つまり64bit版しかなく、32bit版パッケージがインストールされていないのが原因のようです。
ということで32bit版パッケージ(i686)を検索して、インストールしました。
# rpm -ivh libgcc-4.8.5-4.el7.i686.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:libgcc-4.8.5-4.el7 ################################# [100%]
g++も同様に32bit版をインストールしました。
# rpm -ivh libstdc++-4.8.5-4.el7.i686.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:libstdc++-4.8.5-4.el7 ################################# [100%]
インストール後、正常にコンパイルできるようになりました。
% gcc -m32 sample.c
%
% g++ -m32 sample.cpp
%
3.参考サイト
参考サイトは下記です。ありがとうございました。
Posted by yujiro このページの先頭に戻る
トラックバックURL
コメントする
greeting