1

我的规格:

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

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

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

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

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

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

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

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

4

2 回答 2

0

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

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

于 2010-10-19T20:56:43.630 回答
0

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

  • 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 上,你可以添加它。

瞧,它正在工作。

于 2010-10-19T21:20:53.083 回答