Компоновщик не может найти SDL2 (неопределенная ссылка из `ld`, а не из `g++`) [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Компоновщик не может найти SDL2 (неопределенная ссылка из `ld`, а не из `g++`) [дубликат]

Сообщение Anonymous »

Я относительно новичок в C++ и пытаюсь скомпилировать очень простой пример программы, которая просто показывает черное окно в течение 3000 мс, а затем завершает работу. Он отлично компилируется с g++ -lSDL2 hellosdl.cpp, но ld утверждает, что ссылки на что-либо из SDL не определены. Я установил SDL2 с помощью sudo apt install libsdl2-dev (который установил версию 2.0.14+dfsg2-3+deb11u2).

Код:

Код: Выделить всё

#include 

int main(int argc, char ** argv)
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Window * screen = SDL_CreateWindow("My SDL Empty Window",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);
SDL_Delay(3000);
SDL_Quit();
return 0;
}

Вывод компилятора/компоновщика:

Код: Выделить всё

$ g++ -lSDL2 hellosdl.cpp
/usr/bin/ld: /tmp/foobarbaz.o: in function `main':
hellosdl.cpp:(.text+0x18): undefined reference to `SDL_Init'
/usr/bin/ld: hellosdl.cpp:(.text+0x3c): undefined reference to `SDL_CreateWindow'
/usr/bin/ld: hellosdl.cpp:(.text+0x4c): undefined reference to `SDL_Delay'
/usr/bin/ld: hellosdl.cpp:(.text+0x50): undefined reference to `SDL_Quit'
collect2: error: ld returned 1 exit status
Я получаю точно такой же результат (кроме имени объектного файла) при запуске g++ -lSDL hellosdl.cpp, что интересно. Он также выдает точно такой же результат при компиляции с помощью gcc -lSDL2 hellosdl.cpp и gcc -lSDL hellosdl.cpp. Фактически, он выдает тот же результат без каких-либо аргументов -lSDL*. Я делаю что-то очень неправильно?
Мои версии gcc и g++ — это g++ (Raspbian 10.2.1-6+rpi1) 10.2.1 20210110, а моя архитектура (возвращаемая uname -a) — aarch64. Надеюсь, информация окажется полезной.

Подробнее здесь: https://stackoverflow.com/questions/798 ... m-ld-not-g
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»