如何解决Vapor 2遇到的这些OpenSSL/TLS问题?它们使我无法在命令行和Xcode中编译项目。

在SPM构建期间:

note: you may be able to install ctls using your system-packager:

    brew install ctls

note: you may be able to install ctls using your system-packager:

    brew install openssl

SPM构建失败时:
Linking ./.build/debug/Run
ld: library not found for -lcrypto for architecture x86_64
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: build had 1 command failures
error: exit(1): /Library/Developer/Toolchains/swift-3.1-DEVELOPMENT-SNAPSHOT-2017-03-07-a.xctoolchain/usr/bin/swift-build-tool -f /Users/tanner/Desktop/PackageConfig/.build/debug.yaml

同样在SPM中:
<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "shim.h"
        ^
/Users/tanner/Desktop/PackageConfigTwo/.build/checkouts/ctls.git-9210868160426949823/shim.h:4:10: error: 'openssl/conf.h' file not found
#include <openssl/conf.h>
         ^
/Users/tanner/Desktop/PackageConfigTwo/.build/checkouts/crypto.git-7980259129511365902/Sources/Crypto/Cipher/Cipher+Method.swift:1:8: error: could not build Objective-C module 'CTLS'
import CTLS
       ^

在Xcode中:
/Users/tanner/PackageConfig/.build/checkouts/ctls.git-9210868160426949823/shim.h:4:10: 'openssl/conf.h' file not found

/Users/tanner/PackageConfig/.build/checkouts/crypto.git-7980259129511365902/Sources/Crypto/Cipher/Cipher+Method.swift:1:8: Could not build Objective-C module 'CTLS'

ld: library not found for -lssl

ssl - openssl/ctls Vapor 2故障-LMLPHP

最佳答案

此错误意味着未安装OpenSSL或未正确链接。有此问题的三种解决方案。

选项1:使用 Vapor 工具箱(推荐)

安装最新版本的Vapor工具箱。

如果您已经安装了工具箱,请先尝试将其卸载:

which vapor
rm -rf /path/to/vapor

1.1安装(macOS)

添加 Vapor 的自制水龙头
brew tap vapor/homebrew-tap

更新Homebrew并安装工具箱。
brew update
brew install vapor

1.2安装(Ubuntu)

添加Vapor的APT repo 。

快速脚本
eval "$(curl -sL https://apt.vapor.sh)"

手动的
wget -q https://repo.vapor.codes/apt/keyring.gpg -O- | sudo apt-key add -
echo "deb https://repo.vapor.codes/apt $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/vapor.list

安装
sudo apt-get update
sudo apt-get install vapor

1.3完成

现在,您应该可以访问vapor程序,并且应该安装所有必需的依赖项。
vapor build
vapor xcode
swift build和相关命令现在也应该可以正常工作。
swift build
swift package generate-xcodeproj

选项2:安装Vapor的CTLS软件包

2.1安装(macOS)

添加 Vapor 的自制水龙头
brew tap vapor/homebrew-tap

更新Homebrew并安装CTLS
brew update
brew install ctls

重新启动终端,重新生成Xcode项目(如果使用Xcode),然后重试。

2.2安装(Ubuntu)

添加Vapor的APT repo 。

快速脚本
eval "$(curl -sL https://apt.vapor.sh)"

手动的
wget -q https://repo.vapor.codes/apt/keyring.gpg -O- | sudo apt-key add -
echo "deb https://repo.vapor.codes/apt $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/vapor.list

更新APT并安装CTLS。
sudo apt-get update
sudo apt-get install ctls

2.3完成
swift build和其他命令现在应该可以正常工作。

选项3:手动安装和链接OpenSSL或等效版本

3.1安装(macOS)

安装OpenSSL(或任何其他类似的SSL库)
brew install openssl
brew install libressl

3.2安装(Ubuntu)

安装OpenSSL(或任何其他类似的SSL库)
sudo apt-get install libssl-dev

3.3查找链接器标志

您可以使用pkg-config(brew和apt上提供)查找链接器标志或大多数软件包。
pkg-config <package-name> --cflags
pkg-config <package-name> --libs

但是,OpenSSL是通过Homebrew cannot be linked安装的,因此不适用于pkg-config。这些标志应该起作用:
include: /usr/local/opt/openssl/include
libs: /usr/local/opt/openssl/lib

注意,一些库将安装到/usr/include/usr/lib中,这些库不需要显式的链接器标志。通过APT的OpenSSL以这种方式安装。

3.4使用链接器标志

可以在swift build期间添加链接器标志
swift build -Xswiftc -I/path/to/include -Xlinker -L/path/to/lib

也可以在Xcode项目生成期间添加它们。
swift package -Xswiftc -I/path/to/include -Xlinker -L/path/to/lib generate-xcodeproj

关于ssl - openssl/ctls Vapor 2故障,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43070534/

10-10 20:03