gpt4 book ai didi

c - 对符号 'CERT_GetDefaultCertDB@@NSS_3.2' 的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 14:48:56 25 4
gpt4 key购买 nike

我最近向我的 C++ 库添加了 libcurl 依赖项。我使用 -nss 静态编译了 libcurl 以支持 https。我使用Debian 7进行编译。

我为我的库创建了两个版本 - 静态和共享

共享版本可以与任何 Linux 发行版上构建的二进制文件正常链接,但静态构建仅与在 Debian 7 上编译时的二进制文件链接。

我在 Ubuntu 16.04、Debian Stretch 上尝试了静态链接,但在编译过程中都报告以下错误:

g++ -Wall -o Sample Sample.cpp -Wl,-Bstatic -L. -lMyLibrary -Wl,-Bdynamic  -lssl3
/usr/bin/ld: ./libMyLibrary.a(libcurl_la-nss.o): undefined reference to symbol 'CERT_GetDefaultCertDB@@NSS_3.2'
//usr/lib/x86_64-linux-gnu/libnss3.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:22: recipe for target 'Sample' failed
make: *** [Sample] Error 1

静态编译现在只能在 Debian 7 上运行,这是一个大问题。

最佳答案

静态库只是目标文件的存档。结果之一是,它们不携带任何依赖信息。因此,如果您链​​接的静态库依赖于其他一些库,则必须在链接命令中显式添加这些库。

就您而言,这意味着:

  • 查找定义 CERT_GetDefaultCertDB@@NSS_3.2 的人 - this FAQ 的一些答案可以在这里提供帮助
  • 将此库添加到链接器命令中(在静态库之后使用 -l)

关于c - 对符号 'CERT_GetDefaultCertDB@@NSS_3.2' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50097190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com