我正在努力在C语言中添加一个实现openssl RC4功能的测试程序。 Linux的手册页为我提供了功能的格式,并说包括了我所做的头文件。但是,当我尝试编译时,它总是给我错误。
/tmp/ccQwY6Sr.o: In function `main':
rc4.c:(.text+0xd5): undefined reference to `RC4_set_key'
rc4.c:(.text+0xef): undefined reference to `RC4'
collect2: error: ld returned 1 exit status
令人惊讶的是,我似乎无法在线找到有关此特定问题的任何信息。我未定义的引用中如何包含应该定义它们的头文件?
如果有人能在这里为我指明正确的方向,我将不胜感激。
我的编译行是:
gcc rc4.c -o rc4
我的程序是:
#include <openssl/rc4.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
FILE* inFile;
char * bufferIn;
char * bufferOut;
char data[] = "PASSword123";
RC4_KEY * key;
inFile = fopen("/home/chris/Desktop/testfile.txt", "rb+");
fseek(inFile, 0, SEEK_END);
int size = ftell(inFile);
rewind(inFile);
bufferIn = (char*)malloc(sizeof(char)*size);
bufferOut = (char*)malloc(sizeof(char)*size);
fread(bufferIn, 1, size, inFile);
rewind(inFile);
RC4_set_key(key, 11, data);
RC4(key, size, bufferIn, bufferOut);
free(bufferIn);
free(bufferOut);
return 0;
}
答案 0 :(得分:0)
我的编译行是:gcc rc4.c -o rc4
<openssl/rc4.h>
标头仅包含RC4函数的声明,而不包括它们的定义。这些功能在libcrypto库中定义,该库是OpenSSL的一部分。将-lcrypto
添加到命令行以链接到该库。
顺便说一句,RC4不被认为是安全的。避免使用它。