C++ - неопределенная ссылка на "odium_init"
Я пытаюсь создать тестовое приложение, используя libsodium, но получаю сообщение об ошибке:
main.cpp:6: undefined reference to `sodium_init'
Я выполнил следующие команды для установки в качестве пользователя root.
$ ./configure
$ make && make check
$ make install
Этот код имеет проблему.
#include <stdio.h>
#include <sodium.h>
int main(int argc, char **argv)
{
if (sodium_init() == -1)
{
return 1;
}
printf("libsodium had no issues!\n");
return 0;
}
Я использую CodeLite в качестве своей IDE, и мои параметры компилятора C++ следующие:
-g;-O0;-Wall;-lsodium
Параметры были по умолчанию, и я добавил -lsodium
к списку.
Попытка скомпилировать main.cpp
непосредственно из терминала с помощью следующей команды g++ -lsodium main.cpp
выдает ту же ошибку.
Может кто-нибудь, пожалуйста, помогите мне с моей проблемой.
1 ответ
Решение
Библиотеки для ссылок ищутся по порядку, поэтому вам нужно разместить библиотеки после локальных единиц перевода:
g++ main.cpp -lsodium
В вашей IDE обязательно добавьте -lsodium
в качестве аргумента компоновщика.