基本的には下のサイトが詳しく書いてあったのでそれに沿ってコンパイルした.
GSLをVisualC++でビルドする
環境はVC++10(2010)で,上のサイトより新しいgsl-1.15をコンパイルした.
基本的にはほぼ同じ変更で良かったが,何点か調整した.
「clはシンボリックリンクが読めない?」のところでコピーしているが今後,cygwinでシンボリックリンクが使えないと困りそうだったので,もう少し根本的な解決として以下のサイトを参考にlnコマンドを変更した.
Cygwinのlnをmklinkに変換するスクリプト
また,バージョンが違うためconfigureファイルは9139行目付近の
old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
を下のように修正した.
old_archive_cmds='ar cru $oldlib$oldobjs$old_deplibs'
これを行なっても下のエラーが解決されなかった
libtool: link: object name conflicts in archive: .libs/libgsl.lax/libgslblock.lib//cygdrive/e/dev/gsl-1.13/block/.libs/libgslblock.lib
libtoolを--debugオプションをつけて実行したところ競合のチェックは「sort -uc」コマンドでチェックしている事がわかった.
そこで「which sort」とやってみたらwindowsの方にもsortコマンドがあってそちらを呼んでいた.
最終的にパスを
/usr/local/bin:/usr/bin:<windowsのパス>
となるように設定したところうまくいった.
(/usr/local/binにはlnやccclを置き,/usr/binのsortを呼び出すようにした.)
コメントする