VPS上でliboctaveを使ったc++ソースコードがコンパイルできなかったので
備忘録的にメモ。
先生がよこしたreadme.txtの通りにやると、学校のPCではうまく言ってもVPSでは全然うまく行かなかったのを、四苦八苦しまくってようやくコンパイルできるところまでこぎつけたのでメモしておく。
OS
学校
VPS
Linuxよくわからないので本当に手探りでググりまくりながら何とかたどり着いたところのreadme.txtとの違う点。
共有ライブラリのパス
(変更前) LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/octave-3.2.2/
(変更後) LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib/octave/3.6.4/
コンパイルコマンド
(変更前)
g++ -g -Wall -I/usr/include/octave-`octave-config -v` -L/usr/lib/octave-`octave-config -v` -loctave source.cpp -o a.out
(変更後)
g++ -O3 -fPIC -I/usr/local/include/octave-3.6.4 -I/usr/local/include -c -o a.o source.cpp
g++ -o a.out a.o -O3 -fPIC -L/usr/local/lib/octave/3.6.4 -loctave -lcruft
apt-getでインストールされたOctaveが3.2.4で、とりあえず
Matrix A(2,3);
と2行3列の行列を定義しただけでundefined reference to~~~~のエラーが出てトホホしてた。
最初はなるべく学校の環境に近づけようとOctave3.2.2をソースからビルドしようとしたんだけど、makeでよくわかんないエラーがたくさん出て、Linux初心者の自分には無理だと判断。
最新版入れてみようってことでOctave3.6.4をソースからビルドしましたが、makeにドチャクソ時間かかりました。研究室でやってたんだけど三色ショッピング終わってもmake終わってなかった。
まだ課題のプログラムは動かしてないけど多分動くでしょうということでとりあえずコマンドなんかを忘れないようにメモしておきました。