You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu中使用IrrKlang库时无法加载libIrrKlang.so的问题求助

问题解决:Ubuntu下IrrKlang库运行时找不到共享文件

问题背景

在Ubuntu 22.04 LTS系统中使用g++ 11.3.0开发程序,通过IrrKlang库实现声音功能时,程序可正常编译,但运行时报错:

./main: error while loading shared libraries: libIrrKlang.so: cannot open shared object file: No such file or directory

项目目录结构:

  • 根目录存放Makefile
  • lib/路径下存放libIrrKlang.so
  • 编译生成的main可执行文件位于bin/Linux/

曾尝试将可执行文件移至根目录解决问题,但破坏原有目录结构引发其他异常;尝试添加--Wl,-rpath='../../lib'编译选项时,g++提示不识别该参数。

可行解决方案

方案1:修正rpath编译选项(推荐)

你之前的参数格式错误,正确的编译选项应为单横杠-Wl,同时确保rpath路径相对于可执行文件的位置正确(从bin/Linux/到lib/的相对路径是../../lib)。

修改Makefile中的编译命令,添加正确的rpath参数:

g++ -std=c++11 -Wall -Wno-unused-function -g -I ./include/ -L ./lib/ -Wl,-rpath='../../lib' -o ./bin/Linux/main src/main.cpp src/glad.c src/textrendering.cpp src/tiny_obj_loader.cpp src/stb_image.cpp ./lib-linux/libglfw3.a -lrt -lm -ldl -lX11 -lpthread -lXrandr -lXinerama -lXxf86vm -lXcursor -lIrrKlang

该选项会将库的相对路径嵌入到可执行文件中,运行时系统会自动前往指定路径查找共享库,无需额外设置环境变量。

方案2:运行时临时设置LD_LIBRARY_PATH

不修改编译命令,在运行可执行文件前临时设置LD_LIBRARY_PATH环境变量,指定共享库的搜索路径。修改Makefile中的run目标:

run:
	mkdir -p bin/Linux
	g++ -std=c++11 -Wall -Wno-unused-function -g -I ./include/ -L ./lib/ -o ./bin/Linux/main src/main.cpp src/glad.c src/textrendering.cpp src/tiny_obj_loader.cpp src/stb_image.cpp ./lib-linux/libglfw3.a -lrt -lm -ldl -lX11 -lpthread -lXrandr -lXinerama -lXxf86vm -lXcursor -lIrrKlang
	cd bin/Linux && LD_LIBRARY_PATH=../../lib ./main

此方法仅在每次运行时临时生效,不会修改可执行文件本身。

方案3:永久添加库路径到系统配置

如果希望所有用户或当前用户都能全局识别该库,可将项目lib/的绝对路径添加到系统共享库配置中:

  1. 以sudo权限创建文件/etc/ld.so.conf.d/irrklang.conf,文件内容为项目lib/的绝对路径,例如:
/home/your_username/project_folder/lib
  1. 执行sudo ldconfig命令更新系统库缓存

完成后,无论在哪个路径运行可执行文件,系统都会自动找到libIrrKlang.so。


内容的提问来源于stack exchange,提问作者Akim Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:13:17