2

社内で開発したソフトウェアがあります。Fortran で書かれており、1) ソルバー ファイル、2) モデルのファイル、3) 使用するモデルが定義されているファイルの 3 種類のファイルで構成されています。ソルバーは、いくつかのライブラリ、つまり lapack と HSL ma41 も使用します。通常、ユーザーに必要なモデルを選択し、すべてまとめてコンパイルし、実行可能ファイルを提供します。

ユーザーが独自のモデルを追加したり、ソルバーのソース コードを変更/修正/表示したりせずに既存のモデルを修正できるようにしたいと考えています。

1 つの考えは、ソルバーをオブジェクト ファイルにコンパイルすることでした。次に、ユーザーは定義ファイルとモデルをコンパイルし、ライブラリと一緒にリンクします。それは可能ですか?ユーザーは、ソルバーがコンパイルされたものと同じプラットフォームを持っている必要があると思いますか? (つまり、Windows 64 ビットの Intel コンパイラ) OS/ハードウェア/コンパイラの可能な組み合わせのライブラリを構築する必要がありますか?

もう 1 つのアイデアは、難読化を使用してソルバー ソースも送信することです。そのためのテスト済み/信頼できるソリューションをオンラインで見つけることができませんか? それは良いオプションですか?

前もって感謝します。

4

1 に答える 1

2

あなたが提案するように、オブジェクトコードをライブラリで配布できます。コードのエントリ ポイントが Fortran モジュールにある場合は、モジュールのコンパイルの結果である mod ファイル (またはコンパイラの同等物) も配布する必要があります。

(ライブラリ コードのエントリ ポイントのいずれかが外部プロシージャである場合、それらの外部プロシージャにインターフェイス ブロックを提供すると、ユーザーにとって便利です。これらのインターフェイス ブロックはソース形式にすることができます (インターフェイス ブロックには、作成したもの以外の情報は含まれません)。ライブラリのドキュメントが提供する必要があります)、またはモジュールにプリコンパイルすることもできます)。

オブジェクト コードは、プラットフォーム (アーキテクチャ) 固有、コンパイラ固有、コンパイラ バージョン固有、場合によってはコンパイル オプション固有の場合があります。ソルバーとクライアント モデルの間のインターフェイスを慎重に設計および指定することで、潜在的な変動の一部を軽減できます。たとえば、多くのプラットフォームには明確に定義された (おそらく明示的な仕様またはほぼどこにでもある慣習による) C アプリケーション バイナリ インターフェイスがあるため、同等の C を使用して記述されたインターフェイスは通常堅牢ですが、一般的なプロセッサの Fortran よりも機能が大幅に失われます。 Fortran インターフェース。

于 2012-09-02T11:39:11.067 に答える