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 в качестве аргумента компоновщика.

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