1

私の仕様:

  • OS: Ubuntu 10.04 LTS amd64
  • fpc: 2.4.0
  • ラザロ: 0.9.28

WebLaz プロジェクトを作成してコンパイルするだけで、WebLaz プロジェクトをコンパイルしようとしています。どういうわけか、使用する httpd および fpapache ユニットを決定するときにコンパイラがすべて失われます。

フォーラムで同様の問題を見つけました。

そこに提供されているソリューションのいくつかを試した後、私はまだこの時点にいます:

  1. コンパイル済みユニットとパッケージのソースの下に httpd22 しかない場合、プロジェクトは正常にコンパイルされます。残念ながら、それは完全にリンクに失敗します。

  2. 元の fpc/lazarus フォルダー構造 (場所、ユニット、ソースの両方で HTTPD13、HTTPD20、および HTTPD22 のすべてが変更されていない) では、コンパイラーは httpd のチェックサムが変更され、fpapache のソースを見つけることができないと不平を言います。

    • httpd20 の下に httpd.pas が見つかりますが、2.2 のフォルダーでのみ機能します。

WebLaz コンポーネントを使用してこれをコンパイルする方法が完全にわかりません。何が欠けていますか?

4

2 に答える 2

0

おそらく、必要なバージョンを選択してから、関連する lazarus パーツを再構築して、選択した apache で pkgs がビルドされるようにする必要があります。

知る限り、httpd デーモンの選択は単に順序を変更しているだけであり、mysqlconnection のようにすべてのバージョンが一度にサポートされるわけではありません。

于 2010-10-19T20:56:43.630 に答える
0

「コンパイラオプション」の「テスト」ボタンを使用した非常に詳細な出力から調査できることから、これらのオプションは定義されていません。

  • FPCAPACHE_1_3
  • FPCAPACHE_2_0

したがって、これは次のことを意味します: /etc/fpc.cfg

#IFDEF FPCAPACHE_1_3
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd13/
#ELSE
#IFDEF FPCAPACHE_2_0
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd20/
#ELSE
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd22/
#ENDIF
#ENDIF

デフォルトでは、テストは httpd22 に戻ります。

それにもかかわらず、以下を持っています:

  1. /usr/lib/fpc/2.4.0/units/x86_64-linux/httpd20
  2. /usr/lib/fpc/2.4.0/units/x86_64-linux/httpd22

コンパイルされたユニットへのコンパイラのパスでは、最初に httpd20 を見つけることを意味します。

これは、コンパイルされたユニットの 2.2 バージョンではなく、2.0 バージョンをロードしようとすることを意味します。

したがって、最初の解決策は、システムからフォルダーを削除/移動することです。

これでコンパイルできますが、残念ながら 64 ビット システムではリンクしません (AMD64 システムでテストしているので、他の場所で動作するとは思いません)。

プロセスは、コンパイラ オプションに -fPIC を追加するためのヒントで終了します。

下の TextBox の Project->Compiler Options...->Other に移動すると、追加できます。

ほら、それは働いています。

于 2010-10-19T21:20:53.083 に答える