这个问题已经在这里有一个答案:
- 错误引用了一堆悬而未决的OpenSSL符号的明确存在吗? 1个回答
我试图使用OpenSSL的EVP接口做一些加密。 我敢肯定,我的代码是正确的,但我似乎无法得到它的编译。 我使用的海湾合作委员会,并与安装的libssl-dev的,并在最新版本的Ubuntu 32位精确。
目前该项目由一个文件中, program.c
。
#include <openssl/evp.h>
...
i = EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha1() ... );
...
EVP_CIPHER_CTX_init(e_ctx);
除其他各种调用。
这是我如何调用GCC:
gcc -Wall -g -lssl -lcrypto -o program program.c
然后我得到的输出喜欢这个
/home/andy/program/program.c:31: undefined reference to `EVP_sha1'
/home/andy/program/program.c:31: undefined reference to `EVP_aes_256_cbc'
/home/andy/program/program.c:31: undefined reference to `EVP_BytesToKey'
/home/andy/program/program.c:44: undefined reference to `EVP_CIPHER_CTX_init'
因此,包括清楚地工作:
andy@ProgStation2:/usr/include$ find . | grep evp.h
./openssl/evp.h
下面是输出locate libcrypto
。 我最好的猜测是,这是它的一个愚蠢的位置,这就是为什么我的链接失败,所以我试图-L/usr/lib/i386-linux-gnu
前-lcrypto
没有运气也是如此。
/lib/i386-linux-gnu/libcrypto.so.1.0.0
我有点难倒了。 如果有人想给我的感觉像一个傻瓜,我会很高兴地找出我做错了!