我已经安装了OpenSSL。我只想用OpenSSL运行一个程序。
这是我的程序,取自here。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "openssl/aes.h"
int main(int argc, char* argv[])
{
AES_KEY aesKey_;
unsigned char userKey_[16];
unsigned char in_[16];
unsigned char out_[16];
strcpy(userKey_,"0123456789123456");
strcpy(in_,"0123456789123456");
fprintf(stdout,"Original message: %s", in_);
AES_set_encrypt_key(userKey_, 128, &aesKey_);
AES_encrypt(in_, out_, &aesKey_);
AES_set_decrypt_key(userKey_, 128, &aesKey_);
AES_decrypt(out_, in_,&aesKey_);
fprintf(stdout,"Recovered Original message: %s", in_);
return 0;
}
在编译程序的过程中,我得到了与之相同的错误消息,但是那里提供的解决方案对我不起作用。
我仍然遇到编译错误。
$ gcc -I/home/bholanath/Sources/openssl-1.0.1e/include/ op.c -lcrypt
/tmp/ccvHr9Jr.o: In function `main':
op.c:(.text+0x9c): undefined reference to `AES_set_encrypt_key'
op.c:(.text+0xbc): undefined reference to `AES_encrypt'
op.c:(.text+0xd7): undefined reference to `AES_set_decrypt_key'
op.c:(.text+0xf7): undefined reference to `AES_decrypt'
collect2: error: ld returned 1 exit status
$ gcc op.c -lcrypt
/tmp/ccDEZMog.o: In function `main':
op.c:(.text+0x9c): undefined reference to `AES_set_encrypt_key'
op.c:(.text+0xbc): undefined reference to `AES_encrypt'
op.c:(.text+0xd7): undefined reference to `AES_set_decrypt_key'
op.c:(.text+0xf7): undefined reference to `AES_decrypt'
collect2: error: ld returned 1 exit status
任何帮助删除编译错误并运行我的程序都会很棒。 我在Fedora linux下使用GCC。
答案 0 :(得分:1)
您的错误是,您只是简单地与-lcrypt
而不是-lcrypto
进行关联。
libcrypt
是glibc的一小部分,它提供标准的Unix函数crypt(3)
等,并且根本不与OpenSSL相关。
答案 1 :(得分:1)
OpenSSL库名称为libcrypto
和libssl
。尝试链接它们。 libcrypt
是glibc的一部分。
答案 2 :(得分:0)
您的信息是链接器错误,因为它正在搜索目标文件但无法找到它们。在编译时你传递了错误的库名。您应该通过-lcrypto
而不是-lcrypt