Связывание ошибок SDL_image - PullRequest
       87

Связывание ошибок SDL_image

1 голос
/ 20 сентября 2011

Я пытаюсь установить UltraStarDeluxe на компьютере с Linux. make использует скрипты компиляции, сгенерированные fpc (Free Pascal). При вызове make перед выходом ld появляется сообщение об ошибке + предупреждение:

/usr/bin/ld: warning: ../game/link.res contains output sections; did you forget -T?
/usr/bin/ld: cannot find -lSDL_image
/home/sriram/ultraDX/ultrastardx-1.1-src/src/ultrastardx.dpr(344,1) Error: Error while linking
/home/sriram/ultraDX/ultrastardx-1.1-src/src/ultrastardx.dpr(344,1) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)
make[1]: *** [../game/ultrastardx] Error 1
make[1]: Leaving directory `/home/sriram/ultraDX/ultrastardx-1.1-src/src'
make: *** [all] Error 2

Я знаю по здесь , что предупреждающее сообщение ("Вы забыли -T") является ошибкой и было удалено. Вот мой вопрос:

Обновление: 1. Я еще немного поискал в интернете и вижу, что SDL означает Simple Direct Media Layer. Я установил библиотеку, и теперь, в соответствии с вопросом здесь , мой /usr/local/lib содержит следующее:

default.sfx           libSDL-1.2.so.0.11.3  libSDL.la             libSDL.so           
libSDL-1.2.so.0       libSDL.a              libSDLmain.a          pkgconfig/  

Однако ошибки, как упоминалось выше, все еще присутствуют. Как я могу избавиться от них?

Обновление 2:
@wormsparty: я обошел ошибки, выполнив rpm -U SDL_image-1.2.10-1.i586.rpm. Теперь я получаю package SDL_image-1.2.10-1.i586 is already installed. Я также проверил /usr/lib и обнаружил, что установлены следующие библиотеки:

 libSDL-1.2.so.0  libSDL-1.2.so.0.11.2  libSDL_image-1.2.so.0  libSDL_image-1.2.so.0.8.2  libSDL.so

Это то, что я должен искать?

1 Ответ

2 голосов
/ 20 сентября 2011

Вы ищете SDL_image, который обеспечивает libSDL_image.so. Это отдельная библиотека.

Попробуйте установить эту библиотеку. Пакет обычно называется SDL_image.

Вы также можете взять его здесь: http://www.libsdl.org/projects/SDL_image/

Редактировать: О разнице между пакетом X и X-devel:

Библиотеки имеют вид lib${Name}.so.${Version}. Там также могут быть подрывные действия. Версия предназначена для разграничения несовместимых версий, например, libpng 1.4 и 1.5 не являются двоично-совместимыми.

Когда вы связываете свою программу с вашей библиотекой, вы могли бы ссылаться на точный номер версии (например, gcc test.c /usr/lib/libSDL_image-1.2.so.0.8.2 напрямую), но обычно вам не нужен точный номер версии, это почему мы создаем динамическую ссылку: libSDL_image-1.2.so. Эта ссылка будет указывать на точный номер версии.

Обычно в дистрибутивах пользователям, которым нужны только файлы времени выполнения, не нужны ни заголовочные файлы, ни эти динамические ссылки. Раньше у вас, вероятно, был libSDL_image-1.2.so.${some_number} в / usr / lib, но динамическая ссылка libSDL_image-1.2.so отсутствовала. Предоставляется пакетами SDL_image-devel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...