2010/08/25

gccのバージョンによって、リンクがコケル。

いやー見事にはまった。

はまった内容は、gccのバージョン と リンク順で、
シンボルの参照が出来なかっただけっていう話。

gccの4.2だと、オブジェクトを先にリンクしないといけなくて
4.4だと、オブジェクトがライブラリよりあとでも大丈夫とか。

イメージだと

この書き方だと 4.2 、4.4 ともにOK
g++ <オブジェクト>.o -lboost_<name> -o output.out

この書き方だと、4.2はダメ 4.4だと通る。
g++ -lboost_<name> <オブジェクト>.o -o output.out

実際、クロスコンパイルしてて、クロスコンパイル用のgccが4.2
Linux上で使ってるのが4.4で違いが出たんだけど、
こういうのって、当たり前のことなんだろうか。
今度、リンク時の参照でこけたら、いろいろ順番入れ替えてみないといけないな。

0 件のコメント:

コメントを投稿