程序编译,但不能 运行 因为缺少存在的库
Program compiles, but cannot run because of missing library that exists
我有一个 OpenGL 程序。我有所有包含目录,以及所有内容。
目录结构:
Main.cpp
Lib/
GL/
GLEW/
glm/
我通过运行ning编译程序:
g++ main.cpp -lGL -lm -lX11 -lpthread -lXi -lXrandr -ldl -I. -lglfw -Llib/ -o main -lGLEW
错误在-lGLEW。程序编译没有错误,但是当我 运行 ./main
时,它给了我这个:
Error while loading shared libraries: libGLEW.so.2.2: No such file or directory.
这令人困惑,因为在我的 lib/ 目录中,libGLEW.so.2.2
存在,libGLEW.so
和 libGLEW.a
.
也存在
有人可以帮我吗?
当运行动态链接可执行文件时,链接器必须能够找到它需要的所有库。它总是搜索
- 固定默认路径列表,如
/lib
和 /usr/lib
- 环境变量定义的附加路径
LD_LIBRARY_PATH
- 通过
-Wl,-rpath
g++
选项在二进制文件中硬编码的任何非标准路径。
这些是让这个非标准库为运行时链接程序所知的选项。
因此,要么在 运行 时使用 export LD_LIBRARY_PATH=<somepath>/lib
,要么在构建时使用 -Wl,-rpath=<somepath>/lib
(带逗号且无空格)。
我有一个 OpenGL 程序。我有所有包含目录,以及所有内容。
目录结构:
Main.cpp
Lib/
GL/
GLEW/
glm/
我通过运行ning编译程序:
g++ main.cpp -lGL -lm -lX11 -lpthread -lXi -lXrandr -ldl -I. -lglfw -Llib/ -o main -lGLEW
错误在-lGLEW。程序编译没有错误,但是当我 运行 ./main
时,它给了我这个:
Error while loading shared libraries: libGLEW.so.2.2: No such file or directory.
这令人困惑,因为在我的 lib/ 目录中,libGLEW.so.2.2
存在,libGLEW.so
和 libGLEW.a
.
有人可以帮我吗?
当运行动态链接可执行文件时,链接器必须能够找到它需要的所有库。它总是搜索
- 固定默认路径列表,如
/lib
和/usr/lib
- 环境变量定义的附加路径
LD_LIBRARY_PATH
- 通过
-Wl,-rpath
g++
选项在二进制文件中硬编码的任何非标准路径。
这些是让这个非标准库为运行时链接程序所知的选项。
因此,要么在 运行 时使用 export LD_LIBRARY_PATH=<somepath>/lib
,要么在构建时使用 -Wl,-rpath=<somepath>/lib
(带逗号且无空格)。