Я пытаюсь статически связать с SDL2 в Arch Linux, чтобы создать отдельный кроссплатформенный исполняемый файл для игры. Заголовки SDL2 устанавливаются в / usr / include / SDL2, а библиотеки в / usr / lib. Динамическая компиляция с g++ -I/usr/include/SDL2 -lSDL2 hello.cpp
работает, так как ./a.out создает пустое окно, но я не могу статически связать SDL2 с исполняемым файлом.
Содержимое hello.cpp:
#include <iostream>
#include "SDL.h"
int main() {
bool quit{false};
SDL_Event inputEvent;
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow("Hello", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 1280, 1280, 0);
while (!quit) {
SDL_WaitEvent(&inputEvent);
switch (inputEvent.type) {
case SDL_QUIT:
quit = true;
break;
}
}
SDL_Quit();
std::cout << "Bye!";
return 0;
}
g++ -I/usr/include/SDL2 -static -lSDL2 hello.cpp
возвращает /usr/bin/ld: cannot find -lSDL2
, а g++ -I/usr/include/SDL2 -l:libSDL2 hello.cpp
возвращает /usr/bin/ld: cannot find -l:libSDL2
.