Geo*_*rge 5 libraries dynamic-linking
我正在尝试编译一个 opengl 程序,结果是:
加载共享库时出错:libGLEW.so.1.11:无法打开共享对象文件:没有这样的文件或目录
编译:
g++ -o triangle triangle.cpp LoadShaders.cpp -I/home/mks/myGL/oglpg/include/ -L/home/mks/myGL/oglpg/lib -L/usr/lib64 -lglut -lGL -lGLU -lGLEW
Run Code Online (Sandbox Code Playgroud)
在 /home/mks/myGL/oglpg/lib 中有所有库:
libGLEW.so libGLEW.so.1.11.0
libGLEW.a libGLEW.so.1.11
Run Code Online (Sandbox Code Playgroud)
(我不是超级用户,所以我在上面的文件夹中安装了glew)
如果我做:
ldd ./triangle | grep "GLEW"
libGLEW.so.1.11 => not found
Run Code Online (Sandbox Code Playgroud)
- 更新 - -
编译:
g++ -o triangle triangle.cpp LoadShaders.cpp -I/home/mks/myGL/oglpg/include/ -L/home/mks/myGL/oglpg/lib -L/usr/lib64 -lglut -lGL -lGLU -lGLEW
Run Code Online (Sandbox Code Playgroud)
ldd ./三角形:
linux-vdso.so.1 =>
libglut.so.3 => /usr/lib64/libglut.so.3
libGL.so.1 => /usr/lib64/nvidia/libGL.so.1
libGLU.so.1 => /usr/lib64/libGLU.so.1
libGLEW.so.1.11 => not found
libstdc++.so.6 => /usr/lib64/libstdc++.so.6
libm.so.6 => /lib64/libm.so.6
libgcc_s.so.1 => /lib64/libgcc_s.so.1
libc.so.6 => /lib64/libc.so.6
libXext.so.6 => /usr/lib64/libXext.so.6
libX11.so.6 => /usr/lib64/libX11.so.6
libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1
libXi.so.6 => /usr/lib64/libXi.so.6
libnvidia-tls.so.340.29 => /usr/lib64/nvidia/tls/libnvidia-tls.so.340.29
libnvidia-glcore.so.340.29 => /usr/lib64/nvidia/libnvidia-glcore.so.340.29
libdl.so.2 => /lib64/libdl.so.2
/lib64/ld-linux-x86-64.so.2
libxcb.so.1 => /usr/lib64/libxcb.so.1
libXau.so.6 => /usr/lib64/libXau.so.6
Run Code Online (Sandbox Code Playgroud)
ls -al /home/mks/myGL/oglpg/lib :
drwxr-xr-x. .
drwxr-xr-x. ..
-rw-r--r--. freeglut_static.lib
-rw-r--r--. freeglut_static_vs2010_d.lib
-rw-r--r--. freeglut_static_vs2010.lib
-rw-r--r--. gl3w.c
-rw-r--r--. glew_static_d.lib
-rw-r--r--. glew_static_vs2010_d.lib
-rw-r--r--. glew_static_vs2010.lib
-rw-r--r--. libfreeglut.a
-rw-r--r--. libglew32.a
-rw-r--r--. libGLEW.a
lrwxrwxrwx. libGLEW.so -> libGLEW.so.1.11.0
lrwxrwxrwx. libGLEW.so.1.11 -> libGLEW.so.1.11.0
-rw-r--r--. libGLEW.so.1.11.0
-rw-r--r--. LoadShaders.cpp
-rw-r--r--. targa.cpp
-rw-r--r--. vbm.cpp
-rw-r--r--. vermilion32_d.lib
-rw-r--r--. vermilion32.lib
-rw-r--r--. vermilion64_d.lib
-rw-r--r--. vermilion64.lib
Run Code Online (Sandbox Code Playgroud)
回显$路径:
/usr/local/cuda-6.0/bin:/home/mks/bin:/usr/local/cuda-6.0/bin:/usr/lib64/:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)
您需要指示您的系统在哪里可以找到动态库。系统范围的目录/usr/lib位于动态库的默认搜索路径中,但如果要添加自定义目录,则需要通过在环境变量中列出它们来声明它们LD_LIBRARY_PATH。这是一个以冒号分隔的目录列表,例如PATH.
export LD_LIBRARY_PATH=/home/mks/myGL/oglpg/lib\nRun Code Online (Sandbox Code Playgroud)\n\n将此行放在~/.profile您定义环境变量的位置或任何位置。您还可以在 shell 中运行它,它将应用于从该 shell 启动的所有程序。
或者,当您使用该库构建程序时,请注册其在系统上的位置。
\n\ng++ -Wl,-rpath,/home/mks/myGL/oglpg/lib \xe2\x80\xa6 -L /home/mks/myGL/oglpg/lib -lGLEW\nRun Code Online (Sandbox Code Playgroud)\n\n程序库指南中有关共享库的章节可能会提供额外的帮助。
\n| 归档时间: |
|
| 查看次数: |
14210 次 |
| 最近记录: |