Linuxプログラミング 2 (555レス)
前次1-
抽出解除 レス栞

43
(3): 2010/05/26(水)07:36 ID:di73yeB6(1/3) AAS
Ubuntu10.4でコンパイルしたプログラムを
CentOS5.3で実行しようとすると以下のようなエラーが出ます。

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found

Ubuntuにインストールされているglibcやglibc/glibcxxの方が新しいから、
というのは分かるのですが、
Ubuntu側で対応(コンパイルオプションを変更するなど)して
CentOSでも実行できるようなバイナリを作成することは可能でしょうか。
44: 2010/05/26(水)08:05 ID:+Qk1ziVc(1/2) AAS
>>43
最終奥義staticとかどうよ
47
(2): 43 2010/05/26(水)13:23 ID:di73yeB6(2/3) AAS
書き忘れていました。そのプログラムはshared objectも含んでいます…
(本体からはdlopenで利用しています)

staticリンクを試してみたところ、本体は-staticでコンパイルできました。
ですが、.soの方のコンパイル方法がよく分かりません。

通常は
gcc -shared libhello.c -o libhello.so
で作成すると思うのですが、これにglibcをstaticリンクしようと思い
gcc -shared libhello.c -o libhello.so -Wl,-Bstatic -lc -Wl,-Bdynamic
(参考: 外部リンク[html]:jarp.does.notwork.org
としてみたのですが、
省6
50: 43 2010/05/26(水)15:35 ID:di73yeB6(3/3) AAS
>>48
mainで始まるプログラムは-staticをつけてビルドできています
> not a dynamic executable
ので、スタティックアーカイブが不足している、ということは無いと思います…
(Ubuntuではlibc.aは libc6-devパッケージに含まれるようです。)

>>49
無理ですか…

ちなみに、本体のexecutableファイルをgcc4.4.2で-staticをつけてコンパイルし、
.soをgcc4.1でコンパイルしてCentOSで実行した場合、
使用されるglibcのバージョンがそれぞれ異なることになると思いますが、
省2
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.018s