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

Cro*_*oCo 2 c c++ linux shared-libraries sdl-2

我正在尝试从源代码构建SDL库 .我已经下载了压缩文件(即SDL2-2.0.3.tar.gz)并将其解压缩.我不想安装文件/usr/local.根据这个链接,我需要改变configure

最后一个命令说"sudo",所以我们可以将它写入/ usr/local(默认情况下).您可以使用configure脚本的--prefix选项将其更改为其他位置.事实上,有很多很好的选项可供配置使用!请务必查看其--help选项以获取详细信息.

这就是我所做的.

mkdir build
cd build
../configure
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

install文件夹中,我已经创建的下列文件

share 
lib
include 
bin
Run Code Online (Sandbox Code Playgroud)

现在我想运行测试文件.我选择了这个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,这些是文件

在此输入图像描述

共享对象文件在哪里?

kel*_*tar 6

运行生成的程序时出错,因为系统的动态链接器找不到所需的库.方案要求libSDL2-2.0.so.0,链接器查找它在系统定义的目录(/lib,/usr/lib,..., -定义/etc/ld.so.conf),但仍然没有找到-因此错误.

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

export LD_LIBRARY_PATH="$HOME/Desktop/SDL2-2.0.3/install/lib"
./test
Run Code Online (Sandbox Code Playgroud)

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


Luk*_*yes 5

我能够解决这个问题:

sudo apt install libsdl2-dev
Run Code Online (Sandbox Code Playgroud)