2013-11-30 3 views
0

У нас есть задание скомпилировать файл с связанной библиотекой SDL. Сам файл не должен содержать никаких ошибок, поскольку почти каждому удалось его скомпилировать. Я установил SDL 1.2 на Ubuntu 12.04 с помощью следующих команд:Невозможно скомпилировать файл с библиотекой SDL, связанной с Ubuntu

sudo apt-get install libsdl1.2-dev 
sudo apt-get install libsdl-image1.2-dev 
sudo apt-get install libsdl-mixer1.2-dev 
sudo apt-get install libsdl-ttf2.0-dev 

Я компиляции с помощью следующей команды:

gcc -o sdl_introduction sdl_introduction.c `sdl-config --cflags --libs` 

Я использую с GCC 4.6.3
и Я получаю эту ошибку:

/usr/local/lib/libSDL.so: undefined reference to `_XGetRequest' 
collect2: ld returned 1 exit status 

Что может вызвать проблемы?

+1

Вы пытались скомпилировать с указанием библиотек напрямую? Означает ли это те же ошибки? gcc -o sdl_introduction sdl_introduction.c -lSDL -l SDL_main -lGL –

+0

@Jan, если я так делаю, это дает мне еще одну ошибку: 'sdl_introduction.c: 16: 20: фатальная ошибка: SDL.h: Нет такого файла или каталога сбор завершено.' – orustammanapov

+0

Strange. Извините, я понятия не имею. –

ответ

4

я столкнулась с той же проблемой, как вы, это вызвано библиотеки SDL нуждающейся другие библиотеки, чтобы связать с на убунту (или Linux вообще)

Я рекомендую copiling его:

gcc -o sdl_introduction sdl_introduction.c -lX11 -pthread `sdl-config --cflags --libs` 

Обратите внимание на добавленные -lX11 и -pthread.

EDIT:

Мой плохо, я забыл, что вы должны добавить -lX11 и -pthread после других флагов. Результирующий сайт:

gcc -o sdl_introduction sdl_introduction.c `sdl-config --cflags --libs` -lX11 -pthread 
+0

, очевидно, это как-то связано с библиотекой x11. если я пытаюсь запустить X11 в терминале, он показывает, что он не установлен, но когда я пытаюсь его установить, он дает мне следующее сообщение: 'x11-common - это уже самая новая версия. Следующие пакеты были установлены автоматически и больше не требуются: блендер-кодеками-ffmpeg1.2 gir1.2-ubuntuoneui-3,0 libopenimageio1.1 libubuntuoneui-3.0-1 ThunderBird-globalmenu libcmis-0.2-0 Используйте «apt- get autoremove ', чтобы удалить их. 0 обновлен, 0 вновь установлен, 0 удален и 0 не обновлен'. – orustammanapov

+1

'XGetRequest()' является частью X11, не являющейся частью SDL. SDL просто нуждается в этом. Вам также необходимо установить файлы разработчиков X11. Сделайте что-то вроде 'apt-get install x11-dev'. «* Что-то вроде» ссылается на «x11-dev». – alk

+1

@orustammanapov: '' x11-dev "в моем предыдущем комментарии, вероятно, должно быть' libx11-dev'. – alk

Смежные вопросы