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

Единственное решение, которое я нашел, это переустановить объектив Unity, как показано ниже:

sudo apt-get install --reinstall unity-lens-* unity-scope-home

Ссылка: http://adec.altervista.org/blog/ubuntu_13-10_upgrade_issues/

5
задан 19 October 2011 в 01:52

16 ответов

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

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

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

13
ответ дан 25 May 2018 в 17:55
  • 1
    Возможно, вы должны проверить заметки о выпуске для версии gcc в 11.10. – Oxwivi 19 October 2011 в 19:56
  • 2
    Спасибо, очень полезно. Вы также можете полностью обойти заказ gcc -o test test.cpp -I / usr / include / SDL -lSDL, который полезен, когда вы используете pkg-config, поскольку затем вы можете получить cflags и libs за один раз, как gcc -o test test.cpp `pkg-config --cflags --libs sdl` – Eelke 15 June 2012 в 09:51
  • 3
    Читайте о том, почему здесь stackoverflow.com/questions/9417169/… – qwr 8 February 2017 в 08:49

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

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

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

13
ответ дан 25 July 2018 в 21:06

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

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

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

13
ответ дан 31 July 2018 в 12:27

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

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

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

13
ответ дан 7 August 2018 в 20:40

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

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

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

13
ответ дан 10 August 2018 в 09:02

Для Eclipse: у меня такая же проблема, но я разрешаю.

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

... затем построить проект и запустить ... [ ! d7]

1
ответ дан 25 May 2018 в 17:55

Простой 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
ответ дан 25 May 2018 в 17:55

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

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

0
ответ дан 25 May 2018 в 17:55

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

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

0
ответ дан 31 July 2018 в 12: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
ответ дан 2 August 2018 в 02:47

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

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

0
ответ дан 2 August 2018 в 02:47

Простой 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
ответ дан 6 August 2018 в 02:59

Для Eclipse: у меня такая же проблема, но я разрешаю.

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

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

1
ответ дан 7 August 2018 в 20:40

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

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

0
ответ дан 7 August 2018 в 20:40

Простой 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
ответ дан 15 August 2018 в 21:53

Для Eclipse: у меня такая же проблема, но я разрешаю.

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

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

1
ответ дан 15 August 2018 в 21:53

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

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