問題タブ [photran]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
eclipse-cdt - Photran エディタが遅い、またはハングする
私は Photran でかなり大きな fortran90 プロジェクトを持っています。エディターがハングしたり、非常に遅くなったりすることがあります。ファイルを保存するか、行のコメントに ctrl+/ を使用すると、この速度が低下するようです。これに対する解決策はありますか?
ナビゲートするのに便利だと思うので、リファクタリングをオンにしていますが、それをオフにすると役立つようです。他の解決策はありますか?
Linux OSでEclipse-Galileo、photran 5.0を使用しています。Java環境としてjdk 6を使用しています。Helios とそれ以降の photran にアップデートすると違いが生じますか? Heliosへのアップデートは簡単ですか?
編集: TOP を確認したところ、ファイルを保存しようとしているときに CPU が 100% で動作しています! また、リファクタリングもオフにしています。
debugging - 次の Fortran プログラムをデバッグする方法
ステップスルーしてデバッグできるように、次のソフトウェアをコンパイルしようとしています。私は初心者のプログラマーであり、このメイクファイル ビジネス全体が Fortran でどのように機能するかを理解しようとしています。メイクファイルに関する文献が山ほどあることは知っていますが、単純なデバッグ フラグを挿入するだけでよいので、誰かがこの質問に対する答えを教えてくれたら、それが私にとって最善の方法だと思います。
したがって、コンパイルしようとしているプログラム TINKER は、実際にはhttp://dasher.wustl.edu/tinkerwiki/index.php/Main_Pageにあるいくつかのパッケージで構成されています。特定の実行可能ファイル「analyze」のみをコンパイルおよびデバッグしたいと考えています。開発者に連絡したところ、次の返信がありましたが、まだ行き詰まっています...
TINKER には多数の小さなソース コード ファイルがあるため、"-c" フラグを使用して各小さなファイルをオブジェクト ファイルにコンパイルします。次に、これらのオブジェクト コード ファイル (つまり、".o" ファイル) をすべてオブジェクト ライブラリに入れます。最後に、"analyze" などの TINKER トップレベル プログラムのそれぞれをオブジェクト ライブラリに対してリンクします。これを行うための Makefile が TINKER に付属しています。上記の手順を実行するために実行できるさまざまな CPU/コンパイラの組み合わせに対して、「compile.make」、「library.make」、「link.make」と呼ばれる個別のスクリプトも提供しています。「デバッグ可能な」実行可能ファイルをビルドするには、コンパイルおよびリンク段階の一部として適切なデバッグ フラグ (通常は「-g」) を含める必要があります。
現在、OSX 10.6.8 を実行しています。どのフォルダに cd するか、どのコマンドを入力するかを誰かが教えてくれたら、とても素晴らしいことです!
ありがとう!
私のフォローアップの質問(コマンドラインから上記に答える方法を理解できたら、同じ手順をインポートする方法に関係しますが、Photran IDEを使用します - http://wiki.eclipse.org/PTP/photran/documentation/photran5# Starting_a_Project_with_a_Hand-Written_Makefile )
fortran - Fortran での Eclipse の使用
ここで、Fortran 用に Eclipse をセットアップする方法について簡単な質問があります。
「Photran」(Eclipse 用の Fortran ツール) をダウンロードしてインストールしました。私が抱えている問題は、プログラムを実行しようとするたびに、次のようなメッセージが表示"Launch failed. Binary not found."
されることです。次に、最初にファイルを「ビルド」する必要があることがわかりました。次のようなコンソール:
これを機能させる方法についての指針はありますか?
eclipse - EclipseでPhotranIDEを使用してブレークポイントを設定するにはどうすればよいですか?
簡単な質問のように聞こえますが、簡単な「HelloWorld!」を作成しようとしています。アプリケーションとGDBを使用したデバッグでは、ブレークポイントを作成するオプションが提供されないようです。他の誰かがこれを見ていますか?足りないものはありますか?
最近bugzillaに報告されたバグがあります。しかし、問題は、必要な設定やプラグインが不足しているだけではないことを確認したいと思います。
更新: このバグはJunoSR2で修正されています。
eclipse - Windows での fortran コンパイラー用の Eclipse-Photran での LAPACK の構成
アップデート
図書館で役立つ洞察をくれたウラジミールに感謝します。私は別のアプローチを取り、最初にubuntuで開発しました(これはEclipse/Cygwin/をいじるよりもはるかに簡単でした...そして今、私はWindowsに移植しようとしていますが、これはかなりうまくいきますが、それについてもいくつか質問があります、ここに投稿: Fortran プログラムを ubuntu から Windows に移植する際の問題
質問
現在、次のセットアップがあり、fortran コードをコンパイルできるように lapack ライブラリを構成できません。
- ウィンドウズ7
- Windows PATH に追加された Cygwin インストール (GNU fortran 用)
- cygwin でインストールされた lapack と liblapack-devel
- C:/cygwin/lib フォルダーに liblapack.a と libblas.a が作成されます。
私のプログラムでは、次のコードを使用して lapack ライブラリを呼び出します
Eclipse では、次のセットアップを使用しました (Photran パッケージを使用)。
- Fortran プロジェクト: Windows で実行可能な GNU fortran (GCC ツールチェーン)
- GNU fortran コンパイラ:
gfortran ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
- GNU fortran リンカ:
gfortran ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
ライブラリ libblas.a と liblapack.a をコンパイルして、Windows 用の静的ライブラリとして使用しました。これらは C:/cygwin/lib フォルダーにあります。GNU fortran リンカ プロパティで、ライブラリが呼び出さlapack
れblas
、フォルダ内にありましたC:/cygwin/lib
。これにより、コンパイラとリンカ-L"C:/cygwin/lib" -llapack -lblas
のセクションに一部が作成されます。{$COMMAND}
(助けてくれた@vladimir-fに感謝します)
出力には、エラー メッセージはもう残っていません。私だけがEclipseで次のエラーを受け取り、最終的な.exeまたはビンはありません:
ただし、ビルドの結果は依然として実行可能ファイル (この場合は Hamfem.exe) です。このファイルを実行すると、(ルーチンではなく) エラー メッセージが表示されます。The program can't start because cyglapack-0.dll is missing from your computer. Try reinstalling the program to fix this problem.
そのファイルは現在 にありますC:/cygwin/lib/lapack/
が、プログラムを実行するためにこのファイルを必要としないので、別のコンピューターで実行できます。誰かがこれに協力できますか?
次に、.exe が配置されているフォルダーに .dll ファイルをコピーして貼り付けると、短時間実行され、スタックダンプ ファイルが生成されます。「Building Workspace」エラーのため、Eclipse-Photran でデバッガーを使用できません。Binary not found
Eclipseでローカルの Fortran プログラムとして実行しようとすると、Eclipse からメッセージが表示されます。この問題を解決する方法はありますか?
eclipse - Photran および GDB デバッガーを使用した Eclipse での Fortran コードのデバッグ: シンボルの欠落
fortran90 で記述されたプログラムがあり、以前は compaq コンパイラで正常にコンパイルされ、動作していましたが、現在 gfortran でコンパイルしようとしています。コードを .exe にコンパイルして実行できます。ルーチンの特定のポイントまでは正常に機能し、その後エラーがスローされます。
私の現在の構成:
- ウィンドウズ7
- CDT を使用した Eclipse Juno
- フォトラン
- gfortran コンパイラと GDB デバッガ (gdb.exe) を使用した Cygwin のインストール
- デバッガーの構成:
- GDB コマンド セット: 標準 (Windows)
- プロトコル: mi
- 共有ライブラリ: 共有ライブラリ シンボルを自動的に読み込まないでください (これを有効にしても、変更は記録されません)。
debug コマンドを実行すると、次の出力が得られます。
基本的に、2 つの質問が残ります。
- cygwin インストールの .gdbinit ファイルはどこにありますか?
- セットアップで他に考えられるエラーや考慮すべき点はありますか?
eclipse - Eclipse Photran は、大文字の拡張子を持つソース コードをコンパイルしません。
Photran のドキュメントによると、Fortran ソース コードに F90 や F95 などの大文字の拡張子がある場合、このファイルはビルド時に自動的に前処理されます。しかし、それは私にとってはうまくいきませんでした... main.F90 ファイルを 1 つだけ使用してプロジェクトをビルドしようとすると、次のようになります。
すると、Photran は「プロジェクト xxx 用にビルドするものは何もありません」と言うでしょう。Windows と Linux の両方で Photran 8 (Eclipse Juno) と GNU コンパイラを試しました。また、Linux で Intel Fortran コンパイラも試したので、すべて失敗しました。これはEclipseに関連していると思います。また、「ソース フォーム」が正しく設定されていること、つまり *.F90 が「Free Form - C Preprocessed」に設定されていることも確認できます。どんな助けでも大歓迎です。
module - ソースをコピーしたりライブラリを作成したりせずに Fortran モジュールを再利用する方法
ライブラリをビルドしたり、ソース コードを複製したりせずに、複数の Fortran プロジェクト間でコードを共有するかどうか、またはその方法を理解するのに苦労しています。
Linux システムで Intel コンパイラ (ifort) と一緒に Eclipse/Photran を使用していますが、特定のツールよりもモジュールに大きな概念上の問題があると思います。
簡単な例を次に示します。~/workspace/cow には、cow.f90 (プログラム) を含むソース ディレクトリ (src) と、m_graze.f90 と m_moo.f90 にそれぞれ m_graze と m_moo という 2 つのモジュールがあります。このプロジェクトは、実行可能ファイル 'cow' を作成するために適切にビルドおよびリンクされます。実行可能ファイルとモジュール (m_graze.mod および m_moo.mod) は ~/workspace/cow/Debug に保存され、オブジェクト ファイルは ~/workspace/cow/Debug/src に保存されます。
その後、~/workplace/sheep を作成し、src/sheep.f90 をプログラムとして、src/m_baa.f90 をモジュール m_baa として作成します。ruminate() サブルーチンにアクセスするために、sheep.f90 で「m_graze のみ: ruminate を使用」したいと考えています。m_graze.f90 をコピーすることもできますが、コードが同期しなくなり、m_graze の依存関係が考慮されない可能性があります。これらの理由から、m_graze を cow プロジェクトに残して、それに対して shep.f90 をコンパイルしてリンクしたいと思います。
羊のプロジェクトをコンパイルしようとすると、次のようなエラーが発生します。
[プロパティ: 羊のプロジェクト参照] で、牛のプロジェクトを選択できます。Properties:Fortran Build:Settings:Intel Compiler:Preprocessor の下で、~/workspace/cow/Debug (モジュール ファイルの場所) をインクルード ディレクトリのリストに追加して、コンパイラが牛のモジュールを見つけて、sheep.f90 をコンパイルするようにします。ただし、リンカーは次のようなもので終了します。
これは通常、リンクする適切なライブラリがない場合を除いて、ライブラリとライブラリ パスをリンカー設定に追加することで解決されます (これは C ではなく Fortran です)。
牛プロジェクトは、cow.f90、m_graze.f90、および m_moo.f90 を実行可能ファイルにコンパイルおよびリンクすることが完全に可能でした。ただし、sheep プロジェクトは、sheep.f90 および m_baa.f90 をコンパイルし、m_graze.mod モジュールを見つけることができますが、必要な情報がすべてシステムに存在するにもかかわらず、m_graze のシンボルを見つけることができないようです。 .
ifort のリンカ部分に不足している部分を見つけてそれらを結合させるのは簡単な構成のように思えますが、これを実現するために Photran UI のどこにどのマジック ワードを入力する必要があるかわかりません。
私は、C および C のビルド プロセスに対する関心と能力が完全に欠如していることを認めます。これを機能させる唯一の方法でない限り、ライブラリ (.a または .so) を作成する流用は避けたいと思います。
最終的に、私はこの問題に対する純粋な Fortran ソリューションを探しています。これにより、ソース コードの単一のコピーを保持でき、カスタム Makefile の山を手動で維持する必要がなくなります。
それで、これはできますか?
これがすでにどこかに文書化されている場合はお詫びします。Google は、簡単なビルド例、モジュールの作成方法、および既存のライブラリとのリンク方法を示しているだけです。ソースコードの複製を伴わないモジュールでのコードの再利用の例は (m) ないようです。
編集
回答者が指摘しているように、.mod ファイルは必要ですが、十分ではありません。リンク フェーズでは、オブジェクト コード (m_graze.o の形式) または静的ライブラリまたは共有ライブラリのいずれかを指定する必要があります。.mod ファイルは、オブジェクト コード/ライブラリへのインターフェイスを記述しますが、最終的な実行可能ファイルをビルドするには両方が必要です。
このような非常に単純化されたおもちゃの問題の場合、提示された質問に答えるにはこれで十分です。
より複雑な依存関係を持つ大規模なプロジェクト (私の場合、LAPACK95 の MKL バージョンにリンクする F90 の 80 + KLOC) では、IDE またはツールチェーンに、単一の標準的なソース ファイル セットを共有するための十分な自動またはユーザー インターフェイス機能がない場合があります。実行可能な戦略。選択は、重複するソース ファイルが同期しなくなる危険を冒すか、IDE の多くの利点を放棄するか (つまり、make/CMake/SCons ファイルの手動作成を回避する)、またはおそらくその両方のいずれかのようです。リビジョン管理システムと優れたコード編成は役に立ちますが、現在の Eclipse の状態を考えると、プロジェクト間でソース ファイルの単一の標準セットを共有することは決して容易ではないことは明らかです。
eclipse - fortran: Eclipse photran で pgplot を使用する
したがって、私は Fortran プログラマーではありませんが、Fortran で pgplot グラフィックス ライブラリを使用するコードを扱っています。次のコマンドを使用して、コンソールから fortran で実行されているコードを取得できます。
discrete.f はファイルの名前です。したがって、これはコンソールから実行すると機能します。ただし、Eclipse photran プラグインでコードを実行して、デバッガーを使用してコードをステップ実行し、いくつかの変数を観察できるようにしたいと考えています。-lpgplot および -IX11 フラグを Eclipse に配置しようとしましたが、未定義の参照として pgbbuf および pgnumb_ 関数に関するエラーが発生します (これは、Eclipse から呼び出されたときに -lpgplot 関数が機能しないことを意味します。
フラグを正しく設定してこのコードを Photran で実行し、コンパイルして pgplot の図が表示されるようにする方法を教えてください。
コンソール出力を追加しています: