Hyper Wavelog

Hyperに達しない知識で音楽とかゲームとかIT技術とかその他雑記

GLIBC2.5じゃsscanfは使えない?

 

火曜日休みだと一週間が気楽に過ごせることに気づいた。

それより殴り書き。適当でも泣かない。

 

環境:virtualboxUbuntu 12.04(開発) と CentOS 5.7(動作)

どちらもeclipse CDT+gcc

 

とあるC言語プログラム+共有ライブラリにて CentOS側で

% &gcc -lrt -o"hoge" ./main.o -L /usr/lib -L . -lmoga.so

というコマンドで実行スクリプトを作ろうとしたら

 

./libmoga.so :undefined reference to '__isoc99_sscanf@GLIBC_2.7'

っつーエラーが出た。

 

libmoga…?作成した時には出なかったのに?

普通にこの一文を見た感じ「あーglibc2.7じゃないとsscanfが使えないのかなー」とか思ってました。

 

ググったりなんだりしてると

UbuntuCentOSgccコンパイルに差が出るから(おそらくglibcのバージョン?)再コンパイルしてあげてね!」

という一文が見つかったので渋々ソースファイルをCentOS5.7に移してコンパイル。

 

参考: http://stackoverflow.com/questions/2595483/sscanf-c99-not-working-on-some-platforms

 

すると…おお、通った。

しかしすべてのコンパイル時に -fPICを付けないと怒られる事が判明。

これは多分共有ライブラリ(.so)を使ってるからなのかな?

 

色々謎なのだが次同じようなものが出たときは再コンパイルをしてあげよう。

まぁOSごと環境がごっそり変わったらやってあげるのが普通か…

 

 

そういえばvirtualboxがver upしましたね。新規作成時の仮想HDDが可変と固定で変わったようです。可変といっても最大容量は決めなきゃならないみたいです。