在linux编程使用openssl库时, 有时候编译文件会出现
undefined reference to SHA1 等类似错误
而SHA1在openssl/sha.h文件中已经定义,且在自己的c文件中也include了该openssl/sha.h !!
这时候,在编译的时候应该加上-lcrypto -lssl 选项,即可消除编译错误.
—
例子: c文件:
#include<stdio.h>
#include<stdint.h>
#include <openssl/sha.h>
int main(int argc,char **argv)
{
printf(“hello world\n”);
unsigned char hash[SHA_DIGEST_LENGTH];
unsigned char content[4096] = {‘\x41′};
uint32_t len = 4096;
unsigned char * res = SHA1(content,len,hash);
printf(“digest length = %d\n”,SHA_DIGEST_LENGTH);
printf(“digest hash = %s”,hash);
return 0;
}
编译方法:
gcc -o use_sha use_sha.c -lcrypto -lssl
运行:
./use_sha
hello world
digest length = 20
digest hash = ??7_?9J???Hs???Pu
已无错误!!
联系客服