我在Ubuntu 14.04.1上使用PerfectSwift,clang-3.8 我正在使用Perfect,一切正常,但是现在,我再也无法编译了(但它在我的mac上编译)
错误日志
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/ByteIO.swift:282:43: error: cannot convert value of type 'UnsafeRawPointer?' to expected argument type 'UnsafeMutableRawPointer!'
super.init(bio: BIO_new_mem_buf(pointer.baseAddress, Int32(pointer.count)))
~~~~~~~~^~~~~~~~~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/ByteIO.swift:363:34: error: cannot convert value of type 'String' to expected argument type 'UnsafeMutablePointer<Int8>!'
super.init(bio: BIO_new_accept(name))
^~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/ByteIO.swift:394:35: error: cannot convert value of type 'String' to expected argument type 'UnsafeMutablePointer<Int8>!'
super.init(bio: BIO_new_connect(name))
^~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:357:64: error: cannot convert value of type 'UnsafePointer<UInt8>?' to expected argument type 'UnsafeMutablePointer<UInt8>!'
guard 1 == EVP_DigestVerifyFinal(ctx, signature.baseAddress?.assumingMemoryBound(to: UInt8.self), mdLen) else {
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/openssl/bn.h:187:19: error: integer literal is too large to be represented in any integer type
#define BN_MASK (0xffffffffffffffffffffffffffffffffLL)
^
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:385:31: error: use of unresolved identifier 'EVP_des_ede3_wrap'
case .des_ede3_wrap: return EVP_des_ede3_wrap()
^~~~~~~~~~~~~~~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:413:31: error: use of unresolved identifier 'EVP_aes_128_wrap'
case .aes_128_wrap: return EVP_aes_128_wrap()
^~~~~~~~~~~~~~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:423:31: error: use of unresolved identifier 'EVP_aes_192_wrap'
case .aes_192_wrap: return EVP_aes_192_wrap()
^~~~~~~~~~~~~~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:434:31: error: use of unresolved identifier 'EVP_aes_256_wrap'
case .aes_256_wrap: return EVP_aes_256_wrap()
^~~~~~~~~~~~~~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:437:41: error: use of unresolved identifier 'EVP_aes_128_cbc_hmac_sha256'
case .aes_128_cbc_hmac_sha256: return EVP_aes_128_cbc_hmac_sha256()
^~~~~~~~~~~~~~~~~~~~~~~~~~~
COpenSSL.EVP_aes_128_cbc_hmac_sha1:1:13: note: did you mean 'EVP_aes_128_cbc_hmac_sha1'?
public func EVP_aes_128_cbc_hmac_sha1() -> UnsafePointer<EVP_CIPHER>!
^
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:438:41: error: use of unresolved identifier 'EVP_aes_256_cbc_hmac_sha256'
case .aes_256_cbc_hmac_sha256: return EVP_aes_256_cbc_hmac_sha256()
^~~~~~~~~~~~~~~~~~~~~~~~~~~
COpenSSL.EVP_aes_256_cbc_hmac_sha1:1:13: note: did you mean 'EVP_aes_256_cbc_hmac_sha1'?
public func EVP_aes_256_cbc_hmac_sha1() -> UnsafePointer<EVP_CIPHER>!
^
<unknown>:0: error: build had 1 command failures
error: exit(1): /swift/usr/bin/swift-build-tool -f /home/celian/swift_server/.build/debug.yaml -v
我的依赖关系是:
dependencies: [
.Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2),
.Package(url: "https://github.com/iamjono/SwiftString.git", majorVersion: 1),
.Package(url: "https://github.com/PerfectlySoft/Perfect-Curl.git", majorVersion: 2, minor: 0),
.Package(url:"https://github.com/PerfectlySoft/Perfect-XML.git", majorVersion: 2, minor: 0)
]
有人可以帮助我吗?
答案 0 :(得分:1)
Daniel added a comment - 12/Apr/17 7:43 AM INTERNAL Permalink Edit Delete @Alessandro Piazza After some research, the apparent problem is that PerfectCrypto relies on openssl 1.0.2. The official repository only has v1.0.1. I followed this instructions to install openssl v 1.0.2 https://gist.github.com/mbejda/a1dabc45b32aaf8b25ae5e8d05923518 and I was able to compile PerfectCrypto.