2010-10-19 68 views
1

我的規格:問題拉撒路下編譯WebLaz項目

  • 操作系統:Ubuntu的10.04 AMD64
  • FPC:2.4.0
  • 拉撒路:0.9.28

我試圖通過創建一個然後編譯來編譯一個WebLaz項目。 不知何故編譯器會在確定使用httpd和fpapache單元時全部丟失。

我發現類似的問題在論壇中:

嘗試一些只要該解決方案後,我仍然在這一點上:

  1. 項目編譯罰款,如果我只有httpd2 2編譯單位和包的來源。唉,它完全無法鏈接。

  2. 由於原始的fpc/lazarus文件夾結構(所有的HTTPD13,HTTPD20和HTTPD22都未觸及位置,單元和源代碼),編譯器會抱怨httpd的校驗和已經改變,無法找到fpapache的源代碼。

    • 它發現httpd.pas下httpd20但隨後只適用於文件夾爲2.2

我完全失去了作爲如何使用WebLaz組件進行編譯,我缺少什麼?

回答

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 /單位/ x86_64的Linux的/ httpd20
  2. /usr/lib/fpc/2.4.0/units/x86_64-linux/httpd22

這意味着它會找到httpd20第一。

這意味着它會嘗試加載2.0版本而不是2.2版本的編譯單元。

所以第一個解決方案是從系統中刪除/移動1.文件夾。

這會讓你編譯,但它不會鏈接到一個64位系統(我正在測試一個AMD64系統,所以我不會假設它可以在別處工作)。

該過程以提示結束,將-fPIC添加到編譯器選項。

如果你轉到Project-> Compiler Options ...-> Other在下面的TextBox上,你可以添加它。

瞧,它的工作。

0

也許你需要選擇你想要的版本,然後重建相關的lazarus部分,這樣pkgs就可以使用隨後選擇的apache來構建。 Afaik對httpd守護進程的選擇只是簡單地改變順序,並不意味着所有的版本一次被支持,例如, mysqlconnection沒有。

+0

刪除不必要的文件夾並添加-fPIC到我的選項後,它現在編譯相當好! – 2010-10-19 21:03:56