我在使用 Tomcat 作为 Web 服务器并使用 Apache Portable Runtime (APR) 和 OpenSSL for SSL 的 Windows 机器上运行 TeamCity。
我还没有设法将 OpenSSL 的版本升级到 1.0.1g,我认为原因是因为 Tomcat 原生库二进制文件 (tcnative-1.dll) ( http://archive.apache.org/dist/tomcat/tomcat -connectors/native/1.1.29/binaries/tomcat-native-1.1.29-win32-bin.zip)包含 OpenSSL 的 APR 和 1.0.1e 版本,我找不到 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 问题!我现在很忙。但请询问您是否需要该程序的详细说明。