【问题标题】:Problem compiling a WebLaz project under Lazarus在 Lazarus 下编译 WebLaz 项目时出现问题
【发布时间】:2011-04-27 16:07:15
【问题描述】:

我的规格:

  • 操作系统:Ubuntu 10.04 LTS amd64
  • fpc:2.4.0
  • 拉撒路:0.9.28

我试图通过创建一个然后编译来编译一个 WebLaz 项目。 在确定要使用的 httpd 和 fpapache 单元时,编译器会不知何故丢失。

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

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

  1. 如果我在 Compiled units 和包的 Source 下只有 httpd22,项目编译得很好。唉,然后它完全无法链接。

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

    • 它在 httpd20 下找到 httpd.pas,但它只适用于 2.2 的文件夹

我完全不知道如何使用 WebLaz 组件进行编译,我错过了什么?

【问题讨论】:

    标签: lazarus fpc apache-modules


    【解决方案1】:

    可能你需要选择你想要的版本,然后重建相关的 lazarus 部分,这样 pkgs 就可以用当时选择的 apache 来构建。

    Afaik 选择 httpd 守护进程只是改变顺序,并不意味着同时支持所有版本,例如mysqlconnection 可以。

    【讨论】:

    • 在删除不必要的文件夹并将 -fPIC 添加到我的选项后,它现在编译得很好!
    【解决方案2】:

    根据我可以使用“编译器选项”上的“测试”按钮从非常冗长的输出中调查的结果,没有为这些选项定义:

    • FCAPACHE_1_3
    • FCAPACHE_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.0 版本而不是 2.2 版本的编译单元。

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

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

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

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

    瞧,它正在工作。

    【讨论】:

      猜你喜欢
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多