From: Alexander Bokovoy <ab@altlinux.org>
To: Andrew Clark <andrewclarkiii@gmail.com>,
ALT Linux Sisyphus discussions <sisyphus@lists.altlinux.org>
Subject: Re: [sisyphus] игры для ALT Linux
Date: Sun, 26 Jul 2009 11:15:10 +0300
Message-ID: <6062a6e60907260115n11b6d7c4sae97453d8e8b2c59@mail.gmail.com> (raw)
In-Reply-To: <39ae7a760907260032s5c0b013dk9de6ba90f19cce26@mail.gmail.com>
2009/7/26 Andrew Clark <andrewclarkiii@gmail.com>:
>
>> > и, соответственно, звука нет. В сизифе проверить не могу сейчас, там так
>> > же?
>> Скорее всего, в игре грузится "вручную" libSDL.so через dlopen, а не
>> прямой компоновкой во время сборки. Поэтому и хочет игра libSDL.so.
>
> Простите, можно подробнее с этого места? Если я правильно понял,
> shared object загружается самой игрой отдельно, а не вместе с ней, как ее
> часть?
> Верно?
Приложение может использовать внешние компоненты (библиотеки)
различным образом. Оно может быть скомпоновано с библиотекой напрямую,
в момент сборки, а может подгружать ее в момент исполнения
самостоятельно. В первом случае загрузка осуществляется в тот момент,
когда приложение запускается, средствами системы (ld (1)). Во втором
случае приложение самостоятельно подгружает некий внешний модуль (или
библиотеку) прямым использованием функции dlopen(3). Делается это в
первую очередь для загрузки плагинов, но также и для того, чтобы не
грузить в память весь код опциональных возможностей, которые
предоставляет библиотека.
В случае libSDL оберткой над dlopen(3) в GNU/Linux выступает
SDL_LoadObject(), которая используется в libSDL_Image.so для
динамической загрузки библиотек поддержки соответствующих форматов
изображений -- libjpeg.so.*, libtiff.so.* и тому подобных. Ошибка, на
самом деле, не в libSDL*.
libopenal1 умеет по умолчанию динамически грузить libalsa.so.2, если
на платформе доступен dlopen(3). А libopenal0 совершенно по такому же
принципу грузит libSDL и вот здесь ошибка и проявляется.
Однако если в случае libSDL_image определение того, как должна
называться библиотека, происходит при сборке и в бинарник
прописывается полное название (например, libjpeg.so.62), определенное
автоматически при сборке, то в libopenal это не происходит, там
намертво в коде прошита строка "libSDL.so" без всяких определений.
Отсюда и ошибка.
Так что исправлять нужно libopenal, а пример как это сделать, можно
взять в configure от libSDL_image. Неплохо было бы заодно исправить и
openal-soft, которая грузит ту самую libalsa.so.2, намертво прописав
эту строку в коде, без всяких определений.
--
/ Alexander Bokovoy
next prev parent reply other threads:[~2009-07-26 8:15 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-09 13:38 Andrew Clark
2009-06-09 13:46 ` Андрей Черепанов
2009-06-09 14:35 ` Led
2009-06-09 14:40 ` Андрей Черепанов
2009-06-09 14:48 ` Afanasov Dmitry
2009-07-26 4:52 ` Andrew Clark
2009-07-26 6:10 ` Alexey Borisenkov
2009-07-26 6:54 ` Alexey Borisenkov
2009-07-26 7:10 ` Alexander Bokovoy
2009-07-26 8:15 ` Alexander Bokovoy [this message]
2009-06-09 14:12 ` Dmitry V. Levin
2009-06-09 14:15 ` Konstantin Pavlov
2009-06-09 14:52 ` Dmitry V. Levin
2009-06-10 5:56 ` Andrew Clark
2009-07-07 4:39 ` Andrew Clark
2009-07-07 5:22 ` Ildar Mulyukov
2009-07-07 5:47 ` Andrew Clark
2009-07-07 8:13 ` Андрей Черепанов
2009-07-07 10:09 ` Andrew Clark
2009-07-07 14:29 ` Motsyo Gennadi aka Drool
2009-07-25 9:30 ` Andrew Clark
2009-07-25 9:43 ` Mikhail Efremov
2009-07-25 9:52 ` Andrew Clark
2009-07-25 10:08 ` Mikhail Efremov
2009-07-25 10:19 ` Andrew Clark
2009-07-25 10:43 ` Mikhail Efremov
2009-07-25 10:53 ` Andrew Clark
2009-07-25 11:44 ` Ivan Fedorov
2009-07-25 13:11 ` Andrew Clark
2009-07-25 13:15 ` Ivan Fedorov
2009-07-25 10:05 ` Ivan Fedorov
2009-07-25 10:09 ` Andrew Clark
2009-07-25 10:39 ` Ivan Fedorov
2009-07-25 10:46 ` Andrew Clark
2009-07-25 10:59 ` Terechkov Evgenii
2009-07-26 21:11 ` Michael Shigorin
2009-07-26 22:21 ` Mikhail Efremov
2009-07-27 13:54 ` Michael Shigorin
2009-06-09 16:18 ` Denis Nazarov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6062a6e60907260115n11b6d7c4sae97453d8e8b2c59@mail.gmail.com \
--to=ab@altlinux.org \
--cc=andrewclarkiii@gmail.com \
--cc=sisyphus@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git