• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:octaveのコンパイルオプション)

octaveのコンパイルオプション

このQ&Aのポイント
  • MATLABクローンのoctaveをC++ライブラリとして利用する方法について
  • g++コンパイルエラーの解決方法について知りたい
  • redhat linux 7.3でのoctaveコンパイルの問題

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

その後、試してみた結果、私の環境(FreeBSD-4.4)では、 g++ -I/usr/local/include/octave-2.1.30 hello.cpp -L/usr/local/lib/octave-2.1.30 -loctave -lcruft -lg2c でコンパイルでき、実行もできました。 hello.cppを後ろにもっていくと、メッセージは違いますがエラーでコンパイルできませんでしたので、順序は重要だと思います。 g2cは必要なようですね。

bilbo
質問者

お礼

返答が遅れてすいませんでした. ありがとうございます. 回答して頂いたとおり,hello.cppを-Lオプションの前に持ってくる事で, コンパイルから実行まで出来るようになりました. ところで,この様なコンパイラのリンクオプションの記述の前後関係に ついてですが,-Lオプションは,-Lを指定した以降に記述した ファイルやリンクにのみ有効になるため,という解釈でいいんでしょうか? gccのman(www.linux.or.jp/JM/)を見たところ, 特にそのような記述はなかった様にも思いますが.

その他の回答 (2)

回答No.3

たしかにマニュアルには明確な記述はないですね。 でも経験上、-Lは以降の-lにしか効きません。(ソースファイル、オブジェクトファイルのサーチには影響しません) またオブジェクトやライブラリの指定順序は、関数名の重複がある場合などには重要です。

bilbo
質問者

お礼

御礼が遅れてすいませんでした.

回答No.1

octaveとC++との結合や、linuxは使ったことがないのですが、まずは -l* をhello.cppの後ろに持ってくるとどうなりますか? それから、libg2cはg77用のライブラリだとおもいますが、フォートランのライブラリをリンクする必要性がわかりません。単純にはずしてみたらコンパイルできたりしないでしょうか? いずれも試していないので自信なしです。