Не удается скомпилировать программу, которая использует 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
задан 19 October 2011 в 00:52

4 ответа

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

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

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

0
ответ дан 19 October 2011 в 00:52

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

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

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

0
ответ дан 19 October 2011 в 00:52

Простой 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
ответ дан 19 October 2011 в 00:52

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

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

0
ответ дан 19 October 2011 в 00:52

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

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