Не удается скомпилировать программу, которая использует SDL после обновления до 11.10 - неопределенная ссылка на SDL_Init

Я только что обновился с 11.4 до 11.10, и, кажется, что-то не работает: у меня есть программа на C ++, использующая SDL и OpenGL. Я смог скомпилировать и запустить его до обновления. Теперь я получаю ошибки компоновщика, например

undefined reference to `SDL_Init'

У меня установлены пакеты libsdl1.2debian и libsdl1.2-dev, я считаю, что это все, что мне нужно (но я могу ошибаться). Я компилирую программу так:

gcc -I /usr/include/SDL -lSDL -o test test.cpp

Есть идеи, что может быть причиной этого?

6
задан 06.12.2019, 00:25

4 ответа

В моем случае я использовал G ++, и он не работал, и переключение на GCC работает. Я пишу на C, хотя.

Используя Code :: Blocks, флаг библиотеки равен -lSDL2

0
ответ дан 06.12.2019, 00:26

Хорошо, решено. Очевидно, по какой-то таинственной причине порядок опций gcc теперь имеет значение. Поэтому, когда я делаю:

gcc -I /usr/include/SDL -o test test.cpp -lSDL

(переместил опцию -lSDL в конец), все работает просто отлично. Я хотел бы знать, почему это вдруг имеет значение, если раньше, если не было, но сейчас я рад, что все работает снова.

0
ответ дан 06.12.2019, 00:26
  • 1
    Спасибо, очень полезное. Вы можете также completly изменять к лучшему порядок к gcc-o тестовый test.cpp-I/usr/include/SDL-lSDL, который полезен, когда Вы используете pkg-конфигурацию, поскольку Вы можете тогда все еще получить cflags и освобождаете сразу как gcc-o, тестируют test.cpp 'pkg-конфигурация - cflags - освобождает sdl' – derivation 06.12.2019, 00:27
  • 2
    Читайте о почему здесь stackoverflow.com/questions/9417169/… – Igor Popov 06.12.2019, 00:27
  • 3
    Возможно, необходимо проверить информацию о версии на версию gcc в 11,10. – Tseng 06.12.2019, 00:28

Для «Затмения»: у меня та же проблема, но я разрешаю.

  • Выберите проект
  • Проект> Свойства
  • Сборка C / C ++> Настройки - Настройки инструмента> Компилятор GCC C - Включить пути (-l)> "/ usr / include / SDL "
  • Сборка C / C ++> Настройки - Настройки инструмента> GCC C Linker - Библиотеки (-l)>" SDL "
  • Применить

... затем создайте проект и запустите ...

0
ответ дан 06.12.2019, 00:27

Простой GNU Makefile для проекта, который использует SDL:

CXXFLAGS:=(shell pkg-config --cflags sdl2) $(CXXFLAGS)
LDLIBS:=$(shell pkg-config --libs sdl2) $(LDLIBS)

all: test

, где файл test.cpp существует в том же каталоге, что и Makefile.

(Обратите внимание, что я использовал sdl2 вместо sdl, поскольку SDL 1.2 сейчас практически мертв.)

GNU make волшебным образом выяснит команду для вызова g++.

0
ответ дан 06.12.2019, 00:27

Теги

Похожие вопросы