gpt4 book ai didi

windows - 使用 APR 和 OpenSSL 解决 Tomcat 上的 Heartbleed 问题。编译错误

转载 作者:行者123 更新时间:2023-11-28 22:34:31 24 4
gpt4 key购买 nike

我在使用 Tomcat 作为 Web 服务器并使用 Apache Portable Runtime (APR) 和用于 SSL 的 OpenSSL 的 Windows 机器上运行 TeamCity。

我没有成功将 OpenSSL 版本升级到 1.0.1g,我认为原因是因为 Tomcat native 库二进制文件 (tcnative-1.dll) ( http://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.1.29/binaries/tomcat-native-1.1.29-win32-bin.zip ) 同时包含 APR 和版本 1.0.1e的 OpenSSL,但我找不到 1.0.1.g 的新二进制文件。

我尝试自己编译 Tomcat 本地库,但在尝试编译“libapr”项目时出现编译错误。

我得到的编译错误是:

Error   4   error LNK2019: unresolved external symbol __InterlockedIncrement referenced in function _apr_atomic_inc32@4 C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\apr_atomic.obj   libapr
Error 5 error LNK2019: unresolved external symbol __InterlockedExchangeAdd referenced in function _apr_atomic_add32@8 C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\apr_atomic.obj libapr
Error 6 error LNK2019: unresolved external symbol __InterlockedExchange referenced in function _apr_atomic_set32@8 C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\apr_atomic.obj libapr
Error 7 error LNK2019: unresolved external symbol __InterlockedDecrement referenced in function _apr_atomic_dec32@4 C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\apr_atomic.obj libapr
Error 8 error LNK2019: unresolved external symbol __InterlockedCompareExchange referenced in function _apr_atomic_cas32@12 C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\apr_atomic.obj libapr
Error 9 error LNK1120: 5 unresolved externals C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\Debug\libapr-1.dll 1 1 libapr

我正在尝试在 Visual Studio Ultimate 2013 中编译(可能是 Visual Studio 的新版本?)。

我该如何解决这个问题?

有人用 OpenSSL 1.0.1.g 成功构建了 Tomcat 本地库吗?

更新

我已将“平台工具集”设置为 v100(如此处建议 https://groups.google.com/forum/#!topic/UniMRCP/Iybpn51UYnI )并且之前的编译错误消失了,但现在我得到了新的错误:

Error   9   error C1083: Cannot open include file: 'apr.h': No such file or directory   C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\native\include\tcn.h 26  1   tcnative

更多更新

我确实设法解决了编译问题并使用 OpenSSL 1.0.1g 构建了一个 tcnative-1.dll,并且我的 TeamCity 已启动并运行并修复了 Heartbleed 问题!我现在很忙。但请询问您是否需要程序的详细说明。

最佳答案

这是我做的。

我从 Visual Studio 2013 开始。

安装 Visual C++ 2010 Express ( http://go.microsoft.com/?linkid=9709949 )。

安装 OpenSSL(http://slproweb.com/products/Win32OpenSSL.html),我选择“Win32 OpenSSL v1.0.1g”。

下载 native Tomcat ( http://apache.mirrors.spacedump.net//tomcat/tomcat-connectors/native/1.1.29/source/tomcat-native-1.1.29-win32-src.zip )将其提取到某处。

下载 APR 源代码 ( http://apache.mirrors.spacedump.net//apr/apr-1.5.0-win32-src.zip )解压缩并将其移动到目录“tomcat-native-1.1.29-win32-src/jni”中。将它从“apr-1.5.0”目录重命名为“apr”,以便在“jni”文件夹中有一个“apr”文件夹。

在 Visual Studio 2013 中打开“tomcat-native-1.1.29-win32-src/jni/native/libtcnative.dsw”。它会进行一些转换。

从“调试”更改为“发布”。

对于项目“apr”和“tcnative”。右键单击它们,进入属性 ->配置属性。将“平台工具集”设置为“v100”。

右键单击“tcnative”单击属性 -> 配置属性 -> C/C++ -> 附加包含目录 -> 编辑

  • 将“./srclib/apr/include”更改为“../apr/include”
  • 将“./srclib/apr/include/arch/win32”更改为“../apr/include/arch/win32”
  • 添加“C:\OpenSSL-Win32\include”(或您安装 OpenSSL 的任何位置)。

转到配置属性 -> 链接器 -> 输入 -> 附加依赖项 -> 编辑

  • 将“libeay32.lib”更改为“libeay32MT.lib”
  • 将“ssleay32.lib”更改为“ssleay32MT.lib”

转到配置属性 -> 链接器 -> 其他库目录 -> 编辑。

  • 添加“C:\OpenSSL-Win32\lib\VC\static”(或安装 OpenSSL 的任何位置)。

右键单击 tcnative,然后单击“构建”。

构建完成后你会发现“tcnative-1.dll”

在“tomcat-native-1.1.29-win32-src\jni\native\LibR”中

关于windows - 使用 APR 和 OpenSSL 解决 Tomcat 上的 Heartbleed 问题。编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22982848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com