在Lazarus下编译WebLaz项目的问题

时间:2010-10-19 19:07:16

标签: lazarus fpc apache-modules

我的规格:

  • OS:Ubuntu 10.04 LTS amd64
  • fpc:2.4.0
  • 拉撒路:0.9.28

我正在尝试通过创建一个然后编译来编译WebLaz项目。 不知何故,当确定使用httpd和fpapache单位时,编译器会全部丢失。

我在论坛中发现了类似的问题:

在尝试了那里提供的一些解决方案后,我仍然在这一点:

  1. 如果我在编译单元和包的源下只有httpd22,项目编译就可以了。唉,它完全无法链接。

  2. 使用原始的fpc / lazarus文件夹结构(在所有位置,单位和源上都没有触及HTTPD13,HTTPD20和HTTPD22),编译器会抱怨httpd的校验和已经改变,并且无法找到fpapache的源。 / p>

    • 它在httpd20下找到httpd.pas,但它只适用于2.2
    • 的文件夹
  3. 我完全迷失了如何使用WebLaz组件编译它,我缺少什么?

2 个答案:

答案 0 :(得分:0)

您可能需要选择所需的版本,然后重建相关的lazarus部分,以便使用当时选择的apache构建pkgs。

Afaik选择httpd守护进程只是改变顺序,并不意味着一次支持所有版本,例如mysqlconnection确实。

答案 1 :(得分: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
  3. 在编译器的编译单元路径中,这意味着它将首先找到httpd20。

    这意味着它将尝试加载2.0版本,而不是2.2版本的已编译单元。

    所以第一个解决方案是从系统中删除/移动1.文件夹。

    这可以让你编译,但是它不会在64位系统上链接(我在AMD64系统上进行测试,所以我不打算假设它在其他地方工作)。

    该过程以提示结束,将-fPIC添加到编译器选项中。

    如果您转到Project->编译器选项...->在TextBox的下方,您可以添加它。

    Voila,它正在发挥作用。