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
我正在尝试从 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