C 链接Openssl的静态编译

C 链接Openssl的静态编译,c,linker,openssl,static-linking,C,Linker,Openssl,Static Linking,我正在尝试编译一个链接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 M

我正在尝试编译一个链接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包是否可能不包含静态编译所需的文件

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

options=('!makeflags' 'staticlibs')

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

这可能意味着没有静态版本的
libcrypto
?所以,让它工作的唯一方法是自己编译库,不是吗?但奇怪的是,官方的archlinux包是用shared选项编译的,这里()写的是:除了静态归档之外,还要构建一个共享对象