2010-12-06 7 views
6

私は少しのアプリを作ってリリース版を作った。今私は自分のサイトにアップロードしたいです。私はこれまでQtでこのことをしたことがないので、私はバイナリに含めるべきものについて確信が持てません。私のアプリケーションを実行するには何が必要ですか?

どのDLLをアプリケーションに含めるべきかをどのように把握できますか?そして、どこで入手できますか?私はWindowsを使っていますが、Linux版をリリースしたい場合にはどうすればいいのか知りたいと思います。 Windows用の

+3

Linuxの場合は、ソースを与えてコンパイルしてください。 – Falmarri

+3

@ファルマリ:そのようなイデオロギー的見解。私はあなたがこれがしばしば不可能であることを十分に承知していると確信しています。 – Goz

+0

@Goz:望ましくない... –

答えて

9

あなたは出荷すべきかQtライブラリ(またはその他)を参照して、依存関係ウォーカーを使用することができます。これはVisual Studioに含まれているdepends.exe実行ファイルですが、別途ダウンロードすることができます。http://www.dependencywalker.com/

実行時に期待するすべてのモジュールがリストされます。実行可能ファイルをビルドしたコンパイラと互換性のあるVisual C++ランタイム再配布可能ファイルも(VC++の場合)出荷する必要があります。

依存関係ウォーカーはQtのプラグインのようなものを考慮していないことに注意してください。その一例は、Qt4の時点でQtのsqlite機能に依存するQtAssistantシステム(ヘルプメニュータイプの機能用)です(通常はプラグインとして構築されています。qtsqlite4.dll)。 Linuxの場合

これが原因のLinuxディストリビューションでは、より広い格差のトリッキーです。もちろん、ソースを出荷したい場合はGNUビルドシステムを使用できますが、バイナリを出荷していて、さまざまなディストリビューションをサポートしたい場合は、リリースしたい各プラットフォームのパッケージを構築するのが最善でしょう。私の過去に


は、私が働いていた会社がcmakeを使用すると、すべてのプロジェクトを設定した後切り替えやファイルを構築し、構築し、さまざまなOS用のパッケージを生成することを使用しました。 Windowsでは、これはInno Setupでフックインすることを意味し、Unixライクなシステムでは、cmakeはインストール可能なシェルスクリプトのようなものを生成する方法を知っています。間違いなく生きたはるかに容易


当社のQA部門は、当社のサポートされるプラットフォームの仮想マシンインスタンスに当社のソフトウェアをテストし、完全にきれいに、そして何かが欠落していたかどうかを確認します。

+0

偉大な答えは、正確かつポイントに。 –

+0

depends.exeは静的な依存関係を取得しますが、動的依存関係は取得しません(GetProcAddressへの明示的な呼び出し)。 MSVCRTに依存している場合、それはかなり複雑になります。基本的には再配布可能なものを出荷する必要があります。 Qt DLLではなく静的にリンクすることはできません。配布をずっと簡単にする。 –

+0

また、私の経験では、リバースエンジニアリングではなく、テストしなかったプラットフォームで失敗する傾向があるリバースエンジニアリングではなく(ライブラリのマニュアルを読むことによって)これを正しく実行することができます(再配布時には存在しませんでした) 。 –

2

DLLについて言えば、私はそれがWindowsに関するものだと考えています。

Dependency Walkerを使用して、DLLの依存関係を確認してください。

...デベロッパーツールがインストールされていないクリーンなシステムで、実行可能ファイルを置いて実行し、必要で存在しないと報告されているDLLを確認してください。実行可能ファイルの近くにDLLを配置します。

0

Linux版では、Linuxフォークごとにプラットフォームの対象となるインストーラのリリースを作成することも、ソースからコンパイルできるようにすることもできます。あなたのアプリが新しい場合、露出を得る唯一の方法は、ターゲットを絞ったインストーラであるレディメイドインストーラを提供することです。新規ユーザーは、ソースからパッケージをコンパイルするのを嫌う。

最初にdebian(.deb)とredhat(.rpm)パッケージを試すことができます。これらの2つは非常に普及したラインであり、物事を味わうことができます。

関連する問題