Mac OSX LionにHomebrewでインストールしたYAP Prologで状態読み込みができなかったときのメモ
環境
OSX | 10.7.5 |
Homebrew | 0.9.4 |
YAP | 6.2.2 |
症状
YAPのsave_programで保存した状態を読み込もうとしたが読み込めなかった.
- restore→Segmentation Fault
- CインタフェースのYAP_FastInit→[ WARNING: threaded YAP will ignore saved state (ファイル名) ]というメッセージが表示され,状態が読み込まれず無視される
解決策
HomebrewのYAPをアンインストールして,自分でソースを落としてビルドしたら解決した.新たにインストールしたYAPのバージョンは6.2.3.
$ git clone git://yap.dcc.fc.up.pt/yap-6 $ cd yap-6 $ git submodule init $ git submodule update $ ./configure $ make $ make install
Ubuntu 12.10でCadiaPlayer3.0を動かすまでの道のり
General Game Playing Competitionで3回優勝しているCadiaPlayerは動かすまでが結構面倒なので,その手順をメモしておきます.
YAP Prologのインストール
$ cd $ git clone git://yap.dcc.fc.up.pt/yap-6 $ cd yap-6 $ ./configure configure: error: --with-readline was given, but test for readline failed
configureでエラーが出る.config.logを見てみると,
/usr/bin/ld: cannot find -lreadline /usr/bin/ld: cannot find -lncurses
libreadlineとlibncursesが見つからないと言っているのでインストールする.
$ sudo apt-get install libreadline-dev libncurses5-dev
これでconfigureが通るようになる.
$ ./configure $ make $ sudo make install
CadiaPlayerのビルド
$ cd $ wget http://cadia.ru.is/wiki/_media/public:cadiaplayer:cadiaplayer-3.0.tar.gz -O cadiaplayer-3.0.tar.gz $ tar zxvf cadiaplayer-3.0.tar.gz $ cd cadiaplayer-3.0 $ ./configure configure: error: GNU MP not found, see http://gmplib.org/
./configureでエラーが出る.libgmpをインストールする.
$ sudo apt-get install libgmp-dev
これで./configureが通るようになる.
$ ./configure $ make /bin/bash: flex: command not found
flexをインストールする.
$ sudo apt-get install flex
再びmake.
$ make g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/include -Wno-deprecated -g -O2 -O3 -MT gmprotocol.o -MD -MP -MF .deps/gmprotocol.Tpo -c -o gmprotocol.o gmprotocol.cpp gmprotocol.cpp: In static member function ‘static bool cadiaplayer::agent::GMProtocol::hasMessage()’: gmprotocol.cpp:8:20: error: ‘STDIN_FILENO’ was not declared in this scope
エラーメッセージで検索してみると,どうやらunistd.hをインクルードするといいらしい.
Bug #976551 “ftbfs with gcc 4.7 if not including <unistd.h>” : Bugs : widelands
doesn't compile with gcc 4.7 (?) - Technical Help - Forum - Widelands.org
agent/gmprotocol.cppに#include
$ make cadiaplayer.o: In function `~posix_tss_ptr': /usr/include/boost/asio/detail/posix_tss_ptr.hpp:48: undefined reference to `pthread_key_delete'
リンク時にエラーが発生する.-pthreadオプションを使うようにconfigureをやり直して再びmakeすると通る.
$ ./configure LIBS="-pthread" $ make $ make install
これでビルド完了.お疲れ様でした.
Ubuntu 12.10 + Eclipse JunoでEasyShellのOpen/Runが正しく働かなかったときの対処
- Windows->Preferences->EasyShellでEasyShellの設定画面を開く
- Shell Open commandの
gnome-terminal --working-directory="{1}"
を
gnome-terminal --working-directory={1}
に修正する.
- Shell Run commandの
gnome-terminal --working-directory="{1}" --command=./"{3}"
を
gnome-terminal --working-directory={1} --command=./"{3}"
に修正する.
毎回インストールしてるEclipseプラグイン
EasyShell
Vrapper
- Update site: http://vrapper.sourceforge.net/update-site/stable
- Eclipse Marketplaceからインストール可能
- エディタがかなりVimっぽくなる.
Mac OSX Lionでcpp-netlibのビルドに失敗したときのメモ
手順
http://cpp-netlib.org/0.9.4/getting_started.html#getting-startedの通り
- https://github.com/cpp-netlib/cpp-netlib/downloadsからダウンロードし~/cpp-netlibに展開
- 下記のコマンド実行
$ mkdir ~/cpp-netlib-build $ cd ~/cpp-netlib-build $ cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ../cpp-netlib $ make
エラー
/usr/bin/g++ -g -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o -o mime-roundtrip /usr/local/lib/libboost_unit_test_framework-mt.a ld: duplicate symbol boost::detail::system_signal_exception::report() const in /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) and CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o for architecture x86_64
原因
わかりません.
2013/06/02追記:GCC4.8.1だとエラーが増えました.
/usr/local/bin/g++-4.8 -g -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o -o mime-roundtrip /usr/local/lib/libboost_unit_test_framework-mt.a duplicate symbol boost::detail::system_signal_exception::report() const in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_action::signal_action() in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_action::signal_action() in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_action::signal_action(int, bool, bool, char*) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_action::signal_action(int, bool, bool, char*) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::system_error::system_error(char const*) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_handler::s_active_handler in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_action::~signal_action() in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_action::~signal_action() in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_handler::signal_handler(bool, int, bool, char*) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_handler::signal_handler(bool, int, bool, char*) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_handler::~signal_handler() in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::detail::signal_handler::~signal_handler() in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::execution_monitor::catch_signals(boost::unit_test::callback0<int> const&) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::execution_monitor::execute(boost::unit_test::callback0<int> const&) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::system_error::system_error(char const*) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::execution_exception::execution_exception(boost::execution_exception::error_code, boost::unit_test::basic_cstring<char const>, boost::execution_exception::location const&) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::execution_exception::execution_exception(boost::execution_exception::error_code, boost::unit_test::basic_cstring<char const>, boost::execution_exception::location const&) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::execution_exception::location::location(char const*, unsigned long, char const*) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) duplicate symbol boost::execution_exception::location::location(char const*, unsigned long, char const*) in: CMakeFiles/mime-roundtrip.dir/mime-roundtrip.cpp.o /usr/local/lib/libboost_unit_test_framework-mt.a(execution_monitor.o) ld: 20 duplicate symbols for architecture x86_64
論文PDFの管理のためにMendeleyを使い始めた
最近,論文のPDFファイルの管理のためにMendeleyというサービスを使い始めました.それまではPDFに題名通りのファイル名をつけた後にDropboxに放り込んでいたのですが,ファイル名をつけるのが面倒だったり,論文を探すのが大変だったりしたので,もっとスマートな管理方法は無いものかと思っていました.
使いはじめるのにユーザー登録が必要なのが若干面倒ですが,しばらく使ってみたところ,これまでのDropbox管理に比べてかなり楽になりました.PDFをダウンロードしたら,それをMendeleyアプリのウィンドウにドラッグ&ドロップするだけでMendeleyの管理下におかれ,PDFファイルはあらかじめ指定したフォルダに適切なファイル名とともにコピーされます.論文のタイトルによる検索はもちろん,本文の横断的な検索も高速に行うことができます.今のところ1つのPCでしか使用していませんが,複数のPC間でのファイルの同期も可能なようです.
1つの大きな不満は,Read/Unreadステータスが用意されているにも関わらず,Mendeleyアプリ内で論文を開くと直ちにReadになってしまうことです.これでは実際に論文を読んだかどうかを管理するのに役に立ちません.この挙動については随分前から改善を求める声が多いようです.
don't automatically mark pdfs as 'read' – Customer Feedback for Mendeley