- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:octaveのコンパイルオプション)
octaveのコンパイルオプション
このQ&Aのポイント
- MATLABクローンのoctaveをC++ライブラリとして利用する方法について
- g++コンパイルエラーの解決方法について知りたい
- redhat linux 7.3でのoctaveコンパイルの問題
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その後、試してみた結果、私の環境(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は必要なようですね。
その他の回答 (2)
- kaitou-man
- ベストアンサー率60% (86/141)
回答No.3
たしかにマニュアルには明確な記述はないですね。 でも経験上、-Lは以降の-lにしか効きません。(ソースファイル、オブジェクトファイルのサーチには影響しません) またオブジェクトやライブラリの指定順序は、関数名の重複がある場合などには重要です。
質問者
お礼
御礼が遅れてすいませんでした.
- kaitou-man
- ベストアンサー率60% (86/141)
回答No.1
octaveとC++との結合や、linuxは使ったことがないのですが、まずは -l* をhello.cppの後ろに持ってくるとどうなりますか? それから、libg2cはg77用のライブラリだとおもいますが、フォートランのライブラリをリンクする必要性がわかりません。単純にはずしてみたらコンパイルできたりしないでしょうか? いずれも試していないので自信なしです。
お礼
返答が遅れてすいませんでした. ありがとうございます. 回答して頂いたとおり,hello.cppを-Lオプションの前に持ってくる事で, コンパイルから実行まで出来るようになりました. ところで,この様なコンパイラのリンクオプションの記述の前後関係に ついてですが,-Lオプションは,-Lを指定した以降に記述した ファイルやリンクにのみ有効になるため,という解釈でいいんでしょうか? gccのman(www.linux.or.jp/JM/)を見たところ, 特にそのような記述はなかった様にも思いますが.