0

尝试编译 openssl 时出现以下错误。我正在使用 bazel 并且正在使用 gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0。我正在使用 Openssl 1.1.1i。

util/netevent.c:1062: error: undefined reference to 'SSL_get1_peer_certificate'
util/netevent.c:1088: error: undefined reference to 'SSL_get1_peer_certificate'
collect2: error: ld returned 1 exit status

这是我为包装 openssl 编写的 BUILD 文件。以前也是如此,所以我不确定为什么事情会发生变化。

package(default_visibility = ["//visibility:public"])

cc_library(
 name = "libssl",
 srcs = glob(["**/libssl.a"]),
 hdrs = glob(["**/ssl/**/*.h"])
)

cc_library(
 name = "libcrypto",
 srcs = glob(["**/libcrypto.a"]),
 hdrs = glob(["**/crypto/**/*.h"])
)

OpenSSL 配置为

Operating system: x86_64-whatever-linux2
Configuring OpenSSL version 1.1.1i (0x1010108fL) for linux-x86_64

我正在链接 -lssl 和 -lcrypto。

我认为问题出在我正在使用的库上,因为它构建并以某种方式获取SSL_get1_peer_certificate而不是SSL_get_peer_certificate

我 greped 并且它构建的实际文件使用了正确的函数,但二进制文件有错误的函数......

4

2 回答 2

0

libssl.a听起来像一个静态库。

要编译 OpenSSL 库,我需要一个看起来像的规则

cc_library(
  name = "libssl",
  srcs = glob(["src/ssl/*.cc"]),
  hdrs = glob(["src/ssl/*.h"]),
  deps = [
    # TODO
  ]
)
于 2020-12-16T19:50:17.113 回答
0

好的,这只是一个奇怪的答案,但我会提供它。一个名为unbound的依赖项是静态链接的,需要动态链接。

于 2020-12-21T21:19:24.440 回答