我正在尝试在 Ubuntu 上构建一个使用特定库 (SDL) 的项目。该项目使用旧版本的库 (libSDL-1.2)。我错误地安装了最新的库,但后来删除了它。但是,我仍然可以在多个 Ubuntu 库目录中找到它的踪迹。
在某些目录中有适当的版本(/usr/lib/i386-linux-gnu/)而在其他版本中,则有最新的错误版本(/usr/本地/lib/)。为什么我会遇到这种不一致的情况以及如何彻底删除 libSDL2?
答案1
/usr/local/
包含未由包管理器安装的文件,无论是由于手动安装还是由包中的安装程序脚本下载的附加文件(尽管这些文件大多转到/opt/
)。
因此,APT 不知道该目录下的文件。如果您手动安装了这些库,例如通过提取那里的存档,您也可以以相同的方式删除它们。
但是,如果您没有手动安装它们,请注意。在这种情况下,请告诉我们您是如何安装它们的,以便获得进一步更好的帮助。
另一种可能性是,这些库之所以存在,是因为它们可能是由其他程序下载的,而不是通过使用 APT 安装 libsdl2 而下载的。例如,Valve 的 Source Engine 使用 SDL2。当您安装基于 Source 的游戏(例如 Half Life 或 Portal)时,Steam 会下载自己的库(尽管它会将它们保存在用户主目录中)。它们可能来自类似的东西。如果您不知道它们来自哪里,就让它们保持原样。如果操作正确(见下文),它们不会干扰您的开发,删除可能会破坏其他应用程序。
如果您想继续使用 SDL1.2,您应该能够在不删除其他库的情况下这样做:告诉编译器/链接器使用较旧的库。SDL2 共享库始终被调用libsdl2-....so
,因此只需链接到正确的库而无需sdl2
在其中。