読者です 読者をやめる 読者になる 読者になる

マイナス×マイナス

統合失調症な人工知能エンジニアのブログ/ 博士(工学)

boost::program_optionがリンクできない

Ubuntu 10.4 でboost 1.49 にしてみたら、boost 1.38で通っていた program_optionがリンクエラーを吐くようになってしまった。リファレンスを見ても仕様変更があったようには見えないので理由がわからない。
ヘッダファイルを 1.38 にして 1.40の so をリンクするとエラーが出ないという謎の状況になっている。

CMakeFiles/runScRec.dir/main.cpp.o: In function `T.2387':
main.cpp:(.text+0x61b): undefined reference to `boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)'
main.cpp:(.text+0x679): undefined reference to `boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&)'
CMakeFiles/runScRec.dir/main.cpp.o: In function `ParseOption(int, char**)':
main.cpp:(.text+0x796): undefined reference to `boost::program_options::options_description::options_description(std::basic_string, std::allocator > const&, unsigned int, unsigned int)'
collect2: ld returned 1 exit status

なんだろうこれは?

自己解決した。

sudo apt-get remove libboost1.40-dev
したら、ビルドできるようになった。どうやらboostがいっぱいインストールされすぎてて対応が取れなくなっていただけらしい。