Я только что обновился с 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
Есть идеи, что может быть причиной этого?
Хорошо, решено. Очевидно, по какой-то таинственной причине порядок опций gcc теперь имеет значение. Поэтому, когда я делаю:
gcc -I /usr/include/SDL -o test test.cpp -lSDL
(переместил опцию -lSDL
в конец), все работает просто отлично. Я хотел бы знать, почему это вдруг имеет значение, если раньше, если не было, но сейчас я рад, что все работает снова.
Для «Затмения»: у меня та же проблема, но я разрешаю.
... затем создайте проект и запустите ...
Простой 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++
.
В моем случае я использовал G ++, и он не работал, и переключение на GCC работает. Я пишу на C, хотя.
Используя Code :: Blocks, флаг библиотеки равен -lSDL2