2

我想替换Yocto中的默认包。具体来说,我想替换 OpenSSL。

我用过IMAGE_INSTALL_remove,我加了PREFERRED_PROVIDER_virtual/openssl=<my version>。但是由于某种原因,原始的 openssl 不断被其他配方构建和使用。

如何让我的 openssl 构建成为所有系统的默认提供程序?

4

1 回答 1

4

好吧,Yocto 中确实没有全球范围内的 SSL 提供程序选择。

您必须查看哪些食谱拖入 openssl,并检查它们是否支持切换到 gnutls(或您想要使用的任何内容)。

如果我们看一下 curl_7.37.1.bb:

PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "ipv6", "ipv6", "", d)} gnutls zlib"
PACKAGECONFIG_class-native = "ipv6 ssl zlib"
PACKAGECONFIG_class-nativesdk = "ipv6 ssl zlib"

PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
PACKAGECONFIG[ssl] = "--with-ssl,--without-ssl,openssl"
PACKAGECONFIG[gnutls] = "--with-gnutls=${STAGING_LIBDIR}/../,--without-gnutls,gnutls"
PACKAGECONFIG[zlib] = "--with-zlib=${STAGING_LIBDIR}/../,--without-zlib,zlib"

您会看到 curl 同时支持 gnutls 和 openssl。在这种特殊情况下,默认使用 gnutls 进行目标构建,而 openssl 用于本机(主机)构建。这可以从代码片段的前三行中确定。

因此,如果您想更改 curl 以将 openssl 用于您的目标构建,您应该在第一行替换gnutls为。sslPACKAGECONFIG ??= "......"

相当多的食谱得到了这种支持,尽管它们之间的默认值有所不同。因此,您必须准确检查图像中的哪些食谱拖入 openssl,并重新配置它们(如果可能)。

于 2014-11-13T07:42:47.237 回答