crypt function and link error “undefined reference to 'crypt'”

后端 未结 6 1425
别跟我提以往
别跟我提以往 2020-12-11 18:34

I have used the crypt function in c to encrypt the given string. I have written the following code,

#include
#include

int mai         


        
相关标签:
6条回答
  • 2020-12-11 19:07

    The crypt function is non-standard, but is supplied as an extension by the GNU C library on Linux. It's defined in <crypt.h>

    0 讨论(0)
  • 2020-12-11 19:09

    If you want to use the crypt() function, you need to link to the library that supplies it. Add -lcrypt to your compile command.

    Older versions of glibc supplied a libcrypt library for this purpose, and declared the function in <unistd.h> - to compile against this support, you may also need to define either _XOPEN_SOURCE or _GNU_SOURCE in your code before including <unistd.h>.

    Newer versions of glibc don't supply libcrypt - it is instead provided by a separate libxcrypt. You still link with -lcrypt, but the function is instead declared in <crypt.h>.

    0 讨论(0)
  • 2020-12-11 19:13

    crypt() uses DES which is extremely insecure and probably older than you 12 years older than you.

    I suggest you use a serious encryption algorithm, such as AES. Many libraries offer such encryption; OpenSSL (crypto.lib) is a good choice for example.

    Not answering your actual question since a lot of people already did

    0 讨论(0)
  • 2020-12-11 19:15

    You need to include crypt.h if you want to use crypt(). Below your other two includes, add:

    #include <crypt.h>
    
    0 讨论(0)
  • 2020-12-11 19:16

    You have to #define __XOPEN_SOURCE before you #include the header files.

    0 讨论(0)
  • 2020-12-11 19:17

    You need to put the following line before your includes:

    #define _XOPEN_SOURCE
    
    0 讨论(0)
提交回复
热议问题