0

I am getting the following error when I try to compile openssl. I am using bazel and am using gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0. I am using 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

This is the BUILD file I wrote to wrap openssl. Also previously this was building so I am not sure why things changed.

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 configures with

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

I am linking with -lssl and -lcrypto.

I am thinking the issue is with the library I am using because it builds and somehow gets SSL_get1_peer_certificate rather than SSL_get_peer_certificate

I greped and the actual file it builds uses the correct function but the binary file has the wrong one...

Keiros
  • 69
  • 1
  • 9

2 Answers2

0

libssl.a sounds like a static library.

To compile the OpenSSL lib, I expect a rule that looks like

cc_library(
  name = "libssl",
  srcs = glob(["src/ssl/*.cc"]),
  hdrs = glob(["src/ssl/*.h"]),
  deps = [
    # TODO
  ]
)
rds
  • 26,253
  • 19
  • 107
  • 134
0

Okay so this is just a bizarre answer but I shall provide it. A dependency called unbound was being statically linked and it needed to be dynamically linked.

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Keiros
  • 69
  • 1
  • 9