链接错误与OpenSSL

我已经安装了OpenSSL。 我只想运行一个使用OpenSSL的程序。

这里是我的程序,从这里拿走。

#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; } 

在编译程序的时候,我得到了同样的错误信息,但是提供的解决scheme并不适合我。

我仍然收到编译错误。

 $ 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。

Solutions Collecting From Web of "链接错误与OpenSSL"

OpenSSL库名称是libcryptolibssl 。 尝试链接它们。 libcrypt是glibc的一部分。

另外, 你的代码是无效的 。

你的错误是,你正在链接-lcrypt而不是-lcrypto ,很简单。

libcrypt是glibc的一小部分,它提供了标准的Unix函数crypt(3)等,并且完全不涉及到OpenSSL。

对于您的信息,这是一个链接器错误,因为它正在搜索的对象文件,但无法找到这些。 而编译你传递错误的库名称。 你应该传递-lcrypto而不是-lcrypt