ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
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

  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