cygwinで、同じソースをビルドしてみた。
$ g++ -o tst -lboost_regex-mt regex.cpp
これならできるだろう・・・できない。
やはりリンクエラーになる。
ふっと思い立って、こうしてみた。
$ g++ -o tst regex.cpp -lboost_regex-mt
あ、通った。
Ubuntuに戻って、同じことをしてみた。
・・・通る。
そういうことか・・・・。
つまり、do_assign()はヘッダにあるけれども、やはりライブラリが必要なのだ。
nmで確認したが、do_assign()は「U(ndefined)」のままだった。
shared libraryでリンクされるから、そのままになっているのだろう。
-staticで静的にリンクさせて確認しようとしたが、あれやこれや無いと言われたので、やめた。
gccの場合、順番にリンクするんだったと思う。
標準ライブラリなんかは、書かなくても自動でリンクするんだけど、あれは一番最後に追加されていたんだったはず。
んで、一方のmayu。
Makefile.inを書き換えれば済むかと思ったけど、うまくいかん。
$ LIBS=-lboost_regex ./configure
$ make
$ sudo make install
Makefileを見ると、リンクの最後に$(LIBS)を見ていたのだ。
逃げた私を許して・・・。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。