"ошибка: сбой команды компоновщика с кодом выхода" для использования функции шифрования

Я пытаюсь использовать 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 (Сигнал ошибки сегментации), если вы пытаетесь изменить содержимое, на которое они указывают.

Другие вопросы по тегам