我的规格:
我正在尝试通过创建一个然后编译来编译WebLaz项目。 不知何故,当确定使用httpd和fpapache单位时,编译器会全部丢失。
我在论坛中发现了类似的问题:
在尝试了那里提供的一些解决方案后,我仍然在这一点:
如果我在编译单元和包的源下只有httpd22,项目编译就可以了。唉,它完全无法链接。
使用原始的fpc / lazarus文件夹结构(在所有位置,单位和源上都没有触及HTTPD13,HTTPD20和HTTPD22),编译器会抱怨httpd的校验和已经改变,并且无法找到fpapache的源。 / p>
我完全迷失了如何使用WebLaz组件编译它,我缺少什么?
答案 0 :(得分:0)
您可能需要选择所需的版本,然后重建相关的lazarus部分,以便使用当时选择的apache构建pkgs。
Afaik选择httpd守护进程只是改变顺序,并不意味着一次支持所有版本,例如mysqlconnection确实。
答案 1 :(得分: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。
尽管如此,还是:
在编译器的编译单元路径中,这意味着它将首先找到httpd20。
这意味着它将尝试加载2.0版本,而不是2.2版本的已编译单元。
所以第一个解决方案是从系统中删除/移动1.文件夹。
这可以让你编译,但是它不会在64位系统上链接(我在AMD64系统上进行测试,所以我不打算假设它在其他地方工作)。
该过程以提示结束,将-fPIC添加到编译器选项中。
如果您转到Project->编译器选项...->在TextBox的下方,您可以添加它。
Voila,它正在发挥作用。