Apache2 构建mod_helloworld.lpr
我正在尝试构建mod_helloworld.lpr的apache示例,C:\lazarus\components\fpweb\demo\helloworld\apache 拉撒路0.9.29Apache2 构建mod_helloworld.lpr,apache2,lazarus,fpc,apache-modules,Apache2,Lazarus,Fpc,Apache Modules,我正在尝试构建mod_helloworld.lpr的apache示例,C:\lazarus\components\fpweb\demo\helloworld\apache 拉撒路0.9.29 FPC Verion 2.4.3 SVN 27129 i386-win32 将$(lazarudir)\fpc\2.4.3\source\packages\fcl web\src\添加到其他单位文件(-Fu)后,它将编译,但在生成/链接时,我会收到错误 mod_helloworld.lpr(38,1) Er
FPC Verion 2.4.3 SVN 27129
i386-win32 将
$(lazarudir)\fpc\2.4.3\source\packages\fcl web\src\
添加到其他单位文件(-Fu)后,它将编译,但在生成/链接时,我会收到错误
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterCustomImageList
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterMenuItem
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterMenu
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterMainMenu
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterPopupMenu
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterDragImageList
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterControl
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterWinControl
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterGraphicControl
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterCustomControl
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterScrollingWinControl
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterScrollBox
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterCustomFrame
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterCustomForm
mod_helloworld.lpr(38,1) Error: Undefined symbol: WSRegisterHintWindow
mod_helloworld.lpr(38,1) Fatal: There were 15 errors compiling module, stopping
我在滔滔不绝地说,它试图添加lcl或其他东西,但我真的不知道。在Ubuntu 10.04 LTS amd64下,我也遇到了同样的问题 看看 这一点也可能有帮助: 我选择了“删除不必要的文件夹”选项,并强制fpc.cfg始终指向httpd22 我知道这不是最好的,所以我会给出更详细的解释 假设FPSRC包含FPC源文件路径,FPCUNITS包含预编译单元,FPCCFG包含FPC.cfg文件的路径 如果您查看FPCCFG,您会发现一个决定Apache版本的块:
#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
根据建议,您可以将这些指令放在FPCCFG的顶部,以便编译器可以访问正确的文件夹
因此,如果FPC需要编译源代码,它可以在哪里找到源代码
现在我们有另一个问题:它没有链接到正确的ppu
如果您查看FPCUNITS,您会发现3个文件夹:httpd13、httpd20和httpd22
现在,编译器在查找正确的文件夹/单元组合时,将首先在httpd13或httpd20下找到它。如果您想要一个Apache2.2模块,并且会破坏所有链接,那么这是不好的
我没有一个解决这个难题的“智能”解决方案,一个涉及条件指令的解决方案,所以我只是删除了2个我不想要的文件夹(在进行了适当的备份之后,以防我需要编译/链接其他Apache版本)。在我的例子中,是httpd13和httpd20
我还必须将“-fPIC”添加到我的编译器选项中。这是在编译器或链接器的一条错误消息中建议的,但这是唯一一件我真的不知道它是全局设置还是我的64位设置
不过,我希望这在Windows下能起作用
编辑:我正在构建一个多应用程序项目,并将使用fpmake.pp编译所有内容。一旦我了解了fpmake.pp的所有问题,我也会发布它,这样可以避免一些问题。在Ubuntu 10.04 LTS amd64下,我也遇到了同样的问题 看看 这一点也可能有帮助: 我选择了“删除不必要的文件夹”选项,并强制fpc.cfg始终指向httpd22 我知道这不是最好的,所以我会给出更详细的解释 假设FPSRC包含FPC源文件路径,FPCUNITS包含预编译单元,FPCCFG包含FPC.cfg文件的路径 如果您查看FPCCFG,您会发现一个决定Apache版本的块:
#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
根据建议,您可以将这些指令放在FPCCFG的顶部,以便编译器可以访问正确的文件夹
因此,如果FPC需要编译源代码,它可以在哪里找到源代码
现在我们有另一个问题:它没有链接到正确的ppu
如果您查看FPCUNITS,您会发现3个文件夹:httpd13、httpd20和httpd22
现在,编译器在查找正确的文件夹/单元组合时,将首先在httpd13或httpd20下找到它。如果您想要一个Apache2.2模块,并且会破坏所有链接,那么这是不好的
我没有一个解决这个难题的“智能”解决方案,一个涉及条件指令的解决方案,所以我只是删除了2个我不想要的文件夹(在进行了适当的备份之后,以防我需要编译/链接其他Apache版本)。在我的例子中,是httpd13和httpd20
我还必须将“-fPIC”添加到我的编译器选项中。这是在编译器或链接器的一条错误消息中建议的,但这是唯一一件我真的不知道它是全局设置还是我的64位设置
不过,我希望这在Windows下能起作用
编辑:我正在构建一个多应用程序项目,并将使用fpmake.pp编译所有内容。一旦我了解了fpmake.pp的所有问题,我也会发布它,这样就可以避免这些问题。解决了。。。它认为 将
接口
添加到uses cause之后,我就可以编译mod_helloworld了
我不知道这是从哪里来的,但我记得这样做是为了得到一个CGI联合编译
但是现在的问题是,我的apache安装将不会删除.dll
LoadModule mod_helloworld“C:\lazarus\components\fpweb\demo\helloworld\apache\mod_helloworld.dll”
httpd.exe:的第63行出现语法错误
C:/Program Files/Apache软件
基金会n/Apache2.2/conf/httpd.conf:
无法加载
C:/lazarus/components/fpweb/demo/hellow
orld/apache/mod_helloworld.dll到
服务器:无法找到指定的模块
找到了
但是我很快就会把这个问题作为一个新问题发布出来。。。它认为 将
接口
添加到uses cause之后,我就可以编译mod_helloworld了
我不知道这是从哪里来的,但我记得这样做是为了得到一个CGI联合编译
但是现在的问题是,我的apache安装将不会删除.dll
LoadModule mod_helloworld“C:\lazarus\components\fpweb\demo\helloworld\apache\mod_helloworld.dll”
httpd.exe:的第63行出现语法错误
C:/Program Files/Apache软件
基金会n/Apache2.2/conf/httpd.conf:
无法加载
C:/lazarus/components/fpweb/demo/hellow
orld/apache/mod_helloworld.dll到
服务器:无法找到指定的模块
找到了
但是我很快会把这个问题作为一个新问题发布谢谢你的回答,我已经将http13和http20文件夹重新命名为allready。我只是尝试了-fPIC编译器选项,没有任何更改。从我所看到的,fPiC选项看起来像一个gcc选项,谢谢你的回答,我有