2010-10-19 70 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