c - c 函数和链接错误"未定义的'crypt'引用"

我在c中使用crypt函数加密字符串。我写了下面的代码


#include<stdio.h>


#include<unistd.h>



int main()


{


 printf("%sn",crypt("passwd",1000));


}



但是上面的代码出现了一个错误,"undefined reference to `crypt'"。

先谢谢了。

时间:

如果要使用crypt ()函数,则需要链接到crypt库,将-lcrypt添加到编译命令,你可能还需要定义_XOPEN_SOURCE或_GNU_SOURCE 。


$ man 3 crypt



CRYPT(3) Linux Programmer's Manual CRYPT(3)



NAME


 crypt, crypt_r - password and data encryption



SYNOPSIS


 #define _XOPEN_SOURCE /* See feature_test_macros(7) */


 #include <unistd.h>



 char *crypt(const char *key, const char *salt);



 #define _GNU_SOURCE /* See feature_test_macros(7) */


 #include <crypt.h>



 char *crypt_r(const char *key, const char *salt,


 struct crypt_data *data);



 Link with -lcrypt.



 ...



我建议你使用更好的加密算法,比如AES,许多库提供这样的加密;OpenSSL (crypto.lib) 是一个很好的选择。

如果要使用crypt.h,需要包含crypt(),添加:


#include <crypt.h>



你需要将以下行放在include之前:


#define _XOPEN_SOURCE



你必须在#define __XOPEN_SOURCE之前#include头文件。

crypt函数是非标准的,但由Linux上的GNU C库作为扩展提供。在<crypt.h>中定义

...