Как связать библиотеку Argon2 с cmake в Qt Creator

Я хотел бы использовать функцию хеширования пароля Argon 2 в моем приложении C ++. Но я получаю ошибку, если я создаю приложение:

error while loading shared libraries: libargon2.so.0: cannot open shared object file: No such file or directory

Что я сделал до сих пор: я загрузил исходный код в подпапку папки моего проекта Qt (thirdparty> Argon2). Называется make построить Аргон. Так и проверено с make test что все в порядке. Структура проекта выглядит следующим образом:

testproject > CMakeLists.txt
testproject > application > test > impl > src > Main.cpp
testproject > thirdparty > Argon2 > include > argon2.h
testproject > thirdparty > Argon2 > libargon2.so

В свои CMakeLists я добавил Argon include path и TRIED для ссылки на файл .so:

find_library(Argon2 NAMES libargon2 PATHS ${CMAKE_SOURCE_DIR}/thirdparty/Argon2)
# Additional include directories
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/thirdparty/Argon2/include
target_link_libraries(${COMPONENT_NAME} ${Argon2})

Но эта простая тестовая программа выдаст мне вышеупомянутую ошибку.

#include "argon2.h"#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define HASHLEN 32
#define SALTLEN 16
#define PWD "password"
int main(){

uint8_t hash1[HASHLEN];

uint8_t salt[SALTLEN];
memset( salt, 0x00, SALTLEN );

uint8_t *pwd = (uint8_t *)strdup(PWD);
uint32_t pwdlen = strlen((char *)pwd);

uint32_t t_cost = 2;            // 1-pass computation
uint32_t m_cost = (1<<16);      // 64 mebibytes memory usage
uint32_t parallelism = 1;       // number of threads and lanes

argon2i_hash_raw(t_cost, m_cost, parallelism, pwd, pwdlen, salt, SALTLEN, hash1, HASHLEN);
}

Я все еще очень плохо знаком с C ++ и CMake, поэтому я не знаю, была ли моя процедура правильной (очевидно, нет, потому что она не работает).

  1. Можно ли связать только файл .so?
  2. Должен ли я включить в свой проект весь каталог библиотеки Argon (как я пытался)?
  3. Каковы необходимые шаги, чтобы сообщить моему компоновщику, как правильно найти библиотеку?

РЕДАКТИРОВАТЬ

Эта почта похоже на мой. Но я не могу понять их ответы, если будет достаточно .so файла и как связать его с библиотекой, которая не установлена ​​менеджером пакетов моей системы Debian.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]