Невозможно статически связать SDL2 - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь статически связать с 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.

1 Ответ

0 голосов
/ 15 октября 2019

Оказывается, что PKGBUILD sdl2-hg в AUR переименовывал libSDL2.a в libSDL2main.a, следовательно, ошибка libSDL2.a not found. Удаление проблемной строки из PKGBUILD и перекомпиляция SDL2 помогло решить проблему.

...