libSDL2-2.0.so.0: 无法打开共享对象文件

libSDL2-2.0.so.0: cannot open shared object file

我正在尝试从 source code. I've downloaded the compressed file (i.e. SDL2-2.0.3.tar.gz) and extracted it. I don't want to install the files in /usr/local. According to this link 构建 SDL 库,我需要更改 configure

The last command says "sudo" so we can write it to /usr/local (by default). You can change this to a different location with the --prefix option to the configure script. In fact, there are a LOT of good options you can use with configure! Be sure to check out its --help option for details.

这就是我所做的。

mkdir build
cd build
../configure
make
sudo make install

在我创建的 install 文件夹中有以下文件

share 
lib
include 
bin

现在我想运行测试文件。我选择了 testatomic.c 这是命令行 gcc testatomic.c -o test -I/home/xxxx/Desktop/SDL2-2.0.3/install/include/SDL2 -L/home/xxxx/Desktop/SDL2-2.0.3/install/lib -lSDL2 -lSDL2main

我收到这个错误

error while loading shared libraries: libSDL2-2.0.so.0: cannot open shared object file: No such file or directory

lib 中,这些是文件

共享对象文件在哪里?

当 运行 生成程序时出现错误,因为系统的动态链接器找不到所需的库。程序需要 libSDL2-2.0.so.0,链接器在系统定义的目录中查找它(/lib/usr/lib、...,- 在 /etc/ld.so.conf 中定义),但找到 none - 因此出错。

要通知链接器您希望它在何处查找库,您可以定义 LD_LIBRARY_PATH 环境变量,例如在你的情况下:

export LD_LIBRARY_PATH="$HOME/Desktop/SDL2-2.0.3/install/lib"
./test

其他方法是在标准位置安装库,在您的 .bashrc 中定义 LD_LIBRARY_PATH(或您使用的任何 shell),或使用 rpath,例如在编译行的末尾添加 -Wl,-rpath=$HOME/Desktop/SDL2-2.0.3/install/lib

我也有:

./01_hello_SDL: error while loading shared libraries: libSDL2-2.0.so.0: cannot open shared object file: No such file or directory

作为 Lazy Foo 教程的一部分编译第一个 C++ 程序(使用 SDL 头文件)的结果。我发现 libSDL2-2.0.so.0 只是在 GUI 中使用 find 命令。原来是在/usr/local/lib

然后在终端输入:

export LD_LIBRARY_PATH="/usr/local/lib"

我使用以下方法检查了 LD_LIBRARY_PATH 的值:

echo $LD_LIBRARY_PATH

我重新编译(不知道是否有必要),瞧,成功了。

我解决了这个问题:

sudo apt install libsdl2-dev