Gcc 关于Debian的欧洲央行执行副行长idea的未定义参考

Gcc 关于Debian的欧洲央行执行副行长idea的未定义参考,gcc,openssl,debian,evp-cipher,Gcc,Openssl,Debian,Evp Cipher,我有以下代码: #include <stdio.h> #include <stdlib.h> #include <openssl/evp.h> int main (int argc, char *argv[]) { EVP_CIPHER *cipher; EVP_idea_ecb(); } libssl dev已安装。你知道这里出了什么问题吗 我的发行版:x64上的Debian Jessie。一行一行地进行着什么: gcc Testfile.

我有以下代码:

#include <stdio.h>
#include <stdlib.h>
#include <openssl/evp.h>
int main (int argc, char *argv[]) {
    EVP_CIPHER *cipher;
    EVP_idea_ecb();
}
libssl dev
已安装。你知道这里出了什么问题吗


我的发行版:x64上的Debian Jessie。

一行一行地进行着什么:

gcc Testfile.c -lssl -lcrypto
Testfile.c:(.text+0xec): undefined reference to `EVP_idea_ecb'
Debian Jessie x64的OpenSSL库不包含EVP_idea_ecb

gcc Testfile.c -lss
/usr/bin/ld: /tmp/ccgbkhFA.o: undefined reference to symbol 'EVP_CIPHER_iv_length@@OPENSSL_1.0.0'
//usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0: error adding symbols: DSO missing from command linel

libss2命令行界面库包中的libss.so.2.0也没有帮助。

您还需要调用
OpenSSL\u add\u ssl\u algorithms
ssl\u load\u error\u strings
。请参见OpenSSL wiki上的
OpenSSL\u add\u ssl\u algorithms
ssl\u library\u init
是同义词(您可以使用任何一个,但应该使用一个)。“Debian Jessie x64的OpenSSL库不包含EVP\u idea\u ecb”-您应该使用类似于
nm-D/usr/lib/i386 linux gnu/libcrypto.so | grep-i EVP\u idea\u ecb
的东西来确认(或拒绝)符号。它在喘息中也不存在。谢谢你的评论。是的,EVP_idea在libcrypto中不可用。所以这就是gcc返回此错误的原因。但在evp.h中有一个符号,我认为,这个函数应该是可用的,我用错误的参数调用gcc。我在Virtualbox中安装了Fedora。现在我可以做我想做的事了。
gcc Testfile.c -lss
/usr/bin/ld: /tmp/ccgbkhFA.o: undefined reference to symbol 'EVP_CIPHER_iv_length@@OPENSSL_1.0.0'
//usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0: error adding symbols: DSO missing from command linel