在Windows上编译Apache APR

在Windows上编译Apache APR,windows,apache,awk,apr,Windows,Apache,Awk,Apr,最终的结果是,我试图编译一些需要在Windows上从Apache获得APR的东西 编辑:尝试了VS2013和VS2014的Visual Studio命令行工具。 SVN签出的链接显示404: 所以 我从这个链接下载了这三个文件。我解压缩了它们,并按照建议的目录结构重命名它们 C:\work\apr\ C:\work\apr iconv\ C:\work\apr util\ 移动到apr util目录并运行以下make命令并收到以下错误 注意有关于“APR的当前版本不需要awk…”的评论,但是链接

最终的结果是,我试图编译一些需要在Windows上从Apache获得APR的东西

编辑:尝试了VS2013和VS2014的Visual Studio命令行工具。 SVN签出的链接显示404:

所以

我从这个链接下载了这三个文件。我解压缩了它们,并按照建议的目录结构重命名它们

C:\work\apr\ C:\work\apr iconv\ C:\work\apr util\

移动到apr util目录并运行以下make命令并收到以下错误

注意有关于“APR的当前版本不需要awk…”的评论,但是链接不起作用,这有关系吗

任何人有幸编译这个,我需要其他lib/include/objects吗

nmake-f Makefile.win buildall checkall installall clean

收到以下错误:

<clip>
rc.exe /l 0x409 /fo".\Release\libapriconv.res" /i "./include" /i "../apr/include" /d "NDEBUG" /d "API_VERSION_ONLY" .\libapriconv.rc
Microsoft (R) Windows (R) Resource Compiler Version 6.3.9600.17336
Copyright (C) Microsoft Corporation.  All rights reserved.

link.exe @C:\Users\JOHNAT~1\AppData\Local\Temp\nm390A.tmp
Creating library .\Release\libapriconv-1.lib and object .\Release\libapriconv-1.exp
    if exist .\Release\libapriconv-1.dll.manifest mt.exe -manifest .\Release\libapriconv-1.dll.manifest -outputresource:.\Release\libapriconv-1.dll;2
    echo Helper for Post-build step > ".\Release\postbld.dep"
    cd ccs
    "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\nmake.exe" -nologo -f Makefile.win all  BUILD_MODE="Win32 Release" BIND_MODE=shared adobe-stdenc.c
Creating library ..\Release\iconv\adobe-stdenc.lib and object ..\Release\iconv\adobe-stdenc.exp
adobe-stdenc.obj : error LNK2011: precompiled object not linked in; image may not run
..\Release\iconv\adobe-stdenc.so : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\link.EXE"' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.

rc.exe/l 0x409/fo“\Release\libapriconv.res”/i“/include”/i“./apr/include”/d“NDEBUG”/d“仅API版本”\libapriconv.rc
Microsoft(R)Windows(R)资源编译器版本6.3.9600.17336
版权所有(C)微软公司。版权所有。
link.exe@C:\Users\JOHNAT~1\AppData\Local\Temp\nm390A.tmp
正在创建库。\Release\libapriconv-1.lib和对象。\Release\libapriconv-1.exp
如果存在。\Release\libapriconv-1.dll.manifest mt.exe-manifest。\Release\libapriconv-1.dll.manifest-outputresource:。\Release\libapriconv-1.dll;2.
生成后步骤>“\Release\postbld.dep”的回显帮助程序
cd-ccs
“C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\BIN\nmake.exe”-nologo-f Makefile.win all BUILD\u MODE=“Win32 Release”BIND\u MODE=shared adobe stdenc.C
正在创建库..\Release\iconv\adobe-stdenc.lib和对象..\Release\iconv\adobe-stdenc.exp
adobe-stdenc.obj:错误LNK2011:未链接到中的预编译对象;映像可能无法运行
..\Release\iconv\adobe-stdenc.so:致命错误LNK1120:1未解析的外部
NMAKE:致命错误U1077:““C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\BIN\link.EXE”:返回代码“0x460”
停止
NMAKE:致命错误U1077:““C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\BIN\NMAKE.exe”:返回代码“0x2”
停止

来自apache apr项目现场,标题为:

Developer Studio Workspace/Microsoft开发环境IDE构建::

打开apr util/aprutil.dsw工作区,选择aprutil或libaprutil(对于静态或动态库),并将发行版或调试版本作为活动项目。adrutil.dsw导致生成所有相关项目

可能您忽略了以下语句:选择aprutil或libaprutil作为活动项目


然后构建活动项目

有点晚了,但我是这样修好的

在build\modules.mk.win makefile中,从

$(SILENT)link $(ALL_LDFLAGS) $*.obj $(API_LIBS) /out:$@ \

共享库目标现在将读取:

.c{$(OUTPUT_DIR)}.so:
$(SILENT)cl $(ALL_CFLAGS) /Fo$*.obj /Yuiconv.h /c $<
$(SILENT)link $(ALL_LDFLAGS) $*.obj $(MODRES).obj $(API_LIBS) /out:$@ \
    /base:@"..\build\BaseAddr.ref",$(@F)
$(SILENT)if exist $@.manifest \
    $(SILENT)mt -nologo -manifest $@.manifest -outputresource:$@;2 \
    & del "$@.manifest"
$(SILENT)del "$*.exp" & del "$*.lib"
.c{$(OUTPUT_DIR)}。因此:
$(无提示)cl$(所有标记)/Fo$*.obj/Yuiconv.h/c$<
$(静默)链接$(所有标记)$*.obj$(MODRES.obj$(API\u LIBS)/out:$@\
/基本:@.\build\BaseAddr.ref“,$(@F)
$(无提示)如果存在$@.manifest\
$(无提示)mt-nologo-manifest$@。manifest-outputresource:$@;2 \
&del“$@.manifest”
$(无提示)del“$*.exp”和del“$*.lib”
资料来源:

.c{$(OUTPUT_DIR)}.so:
$(SILENT)cl $(ALL_CFLAGS) /Fo$*.obj /Yuiconv.h /c $<
$(SILENT)link $(ALL_LDFLAGS) $*.obj $(MODRES).obj $(API_LIBS) /out:$@ \
    /base:@"..\build\BaseAddr.ref",$(@F)
$(SILENT)if exist $@.manifest \
    $(SILENT)mt -nologo -manifest $@.manifest -outputresource:$@;2 \
    & del "$@.manifest"
$(SILENT)del "$*.exp" & del "$*.lib"