"ошибка: сбой команды компоновщика с кодом выхода" для использования функции шифрования
Я пытаюсь использовать crypt
Функция как это (я новичок в C, это только для обучения)
#include<stdio.h>
#define _XOPEN_SOURCE
#include <unistd.h>
char *crypt(const char *key, const char *salt);
int main()
{
char* key="ilya";
char* salt="xx";
char* password=(char*)crypt(key, salt);
printf("%s\n", password);
return 0;
}
Я скомпилирую это, используя make filename
И я получаю следующую ошибку:
/home/bla/password.c:20: undefined reference to `crypt'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Это почему?
(Я знаю, что это очень паршивый способ зашифровать вещи, это только для учебных целей)
1 ответ
Решение
Пытаться gcc file.c -o file -lcrypt
связать библиотеку libcrypt, если вы работаете в Linux.
Вы можете удалить (char*)
изгнан crypt()
, он уже возвращает char *
а также декларация crypt()
функция, так как она уже предоставлена unistd.h
,
Я также предлагаю вам изменить это:
char *key
char *salt
в
const char *key
const char *salt
Так как они указывают на постоянную память и будут производить SIGSEGV
(Сигнал ошибки сегментации), если вы пытаетесь изменить содержимое, на которое они указывают.