【问题标题】:Static compilation linking Openssl静态编译链接Openssl
【发布时间】:2015-09-15 10:40:53
【问题描述】:

我正在尝试编译一个链接 openssl 库的程序。当我动态编译时,我没有遇到任何问题。当我添加 -static 标志时出现问题,我收到此错误:

gcc  -g -static -static-libgcc -static-libstdc++  -o hmac-sha1-bios-x64 ../main.c -lcrypto -lm
/usr/bin/ld: impossibile trovare -lcrypto
collect2: error: ld returned 1 exit status
Makefile:10: set di istruzioni per l'obiettivo "hmac-sha1-bios-x64" non riuscito
make: *** [hmac-sha1-bios-x64] Errore 1

有没有人知道如何静态编译 openssl 库?

我在 /usr/lib 中查找了一些对 libcrypto.a 的引用,但我只得到了 libcrypt.a。我正在研究archlinux,官方的openssl archlinux软件包是否可能不包含静态编译所需的文件?

【问题讨论】:

  • 这可能意味着libcrypto没有静态版本?
  • 那么,让它工作的唯一方法就是自己编译库,不是吗?但奇怪的是,archlinux官方包编译时使用了shared选项,这里(wiki.openssl.org/index.php/Compilation_and_Installation)是这样写的:除了静态归档之外构建一个共享对象

标签: c linker openssl static-linking


【解决方案1】:

好的,我解决了。在创建 openssl 包的过程中,所有的静态库都会被删除。唯一的方法是下载 PKGBUILD,然后将“staticlibs”添加到选项字段:

options=('!makeflags' 'staticlibs')

通过这种方式,包用静态库重建,它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-14
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多