加载共享库libSDL-1.2.so.0时出现错误。

我正在尝试在我的Ubuntu服务器上安装ioquake。

当我尝试运行它时,我收到以下消息:

# ./ioquake3
./ioquake3.x86_64: error while loading shared libraries: libSDL-1.2.so.0: cannot open shared object file: No such file or directory

我以为我已经把一切都搞定了,这里是libSDL的位置:
# cd /usr/lib64
# /usr/lib64# ls -l
total 2308
lrwxrwxrwx 1 root root      15 Oct 15 00:25 libSDL-1.1.so.0 -> libSDL-1.2.so.0
lrwxrwxrwx 1 root root      20 Oct 15 00:25 libSDL-1.2.so.0 -> libSDL-1.2.so.0.11.4
-rwxr-xr-x 1 root root 2358903 Jan 19  2012 libSDL-1.2.so.0.11.4

我的道路:
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib64

我做错了什么?

3我认为这是来自libSDL的消息,而不仅仅是关于libSDL的消息。执行strace ./ioquake.x86_64。这将显示所有系统调用(执行时间更长)。它将显示哪个尝试打开哪个文件会失败。 - January
我安装了trace。当我直接运行它时,我得到了帮助信息。当我按照你的建议运行strace ./ioquake.x86_64时,却显示命令未找到。我头疼了:( - ErocM
我安装了strace*。 - ErocM
根据OpenArena FAQ中的信息,当libSDL未安装时会出现此错误消息,所以我不认为它是由它引起的。虽然这不是最好的主意,但为了确保,您是否尝试将libSDL-1.2.so.0.11.4重命名为libSDL-1.2.so.0? - NorTicUs
即使第一个对你有用,请将第二个(23个赞)标记为答案,因为它实际上对99%的人都是正确的。 - tatsu
6个回答

这对我有用:
sudo apt-get install libsdl1.2debian:i386

3这是更好的答案,应该标记为答案。 - tatsu
1当前选择的答案告诉我们要执行 apt updateapt reinstall,但你不需要这些,你只需要安装 i386 架构的 libsdl。这应该是正确的答案。 - Henrique de Sousa
我需要安装的是libsdl1.2debian,而不是libsdl1.2debian:i386,这样才能在Ubuntu 20.04上成功打开OpenArena。 - kas
请注意,i386 是指 32 位机器,所以在 64 位机器上不需要它 - 这意味着您只需运行 sudo apt-get install libsdl1.2debian - tsveti_iko
@tsveti_iko 嗯,已经过了几年了,也许ioquake在64位机器上仍然需要32位版本? - Joril
谢谢,我需要32位版本的应用程序,比如Deflemask,而错误信息并没有说明清楚。也许运行file my_executable可以在这些情况下找到32位可执行文件。 - hsandt

在终端中尝试以下操作:
sudo apt-get update

跟着
sudo apt-get install --reinstall libsdl1.2debian

请发布您可能看到的任何错误消息


我知道这已经晚了一年。但是这应该可以解决问题:
dpkg --add-architecture i386
sudo apt-get install libsdl1.2debian

问题是你正在运行一个编译为32位架构的程序,但使用了64位库。

4或者 sudo apt-get install libsdl1.2debian:i386 - Joril
1@Joril 我认为你的评论本身应该作为一个回答 - Alter Lagos

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

3你能否解释一下问题是什么,以及运行上述命令将如何解决它? - Mostafa Ahangarha
实际上,用户应用程序使用上述库将文本或图像转储到SDL窗口上。 - jagadeesh
我是指在回答中包含解释。然而,我认为这个解释还不够。 - Mostafa Ahangarha


没有其他人的答案能解决我的问题。但是这个可以:
$ sudo apt-get install libsdl1.2debian libsdl-image1.2 libsdl-ttf2.0-0 libopenal1 libsndfile1 libncursesw5

关于64位依赖项未能安装的问题,可能是由于32位库的原因,具体我不太确定。