相关疑难解决方法(0)

链接时LD_LIBRARY_PATH和-L有什么区别?

LD_LIBRARY_PATH链接时遇到问题(这个问题与运行时间无关).

当我运行make时,链接行看起来像这样(这是一个使用g ++版本4.1.x的Linux系统):

g++ a.o b.o c.o -o myapp \
 -L/long/path/to/libs/ \
 -L/another/long/path/ \
 -labc -ldef -lghi
Run Code Online (Sandbox Code Playgroud)

-l选项参考存在于由指定的目录共享库(例如,libabc.so)-L选项.这些目录也出现在LD_LIBRARY_PATH.使用该配置,链接成功,我可以运行该应用程序.

如果我从中删除目录LD_LIBRARY_PATH,那么我会得到一个错误行,例如:

/usr/bin/ld: cannot find -labc
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我从-L选项列表中删除目录,那么我会收到许多警告,例如:

/usr/bin/ld: warning: libabc.so, needed by /long/path/to/libs/libxyz.so,
    not found (try using -rpath or -rpath-link)
Run Code Online (Sandbox Code Playgroud)

然后还有更多错误,例如:

/long/path/to/libs/libdef.so: undefined reference to `Foo::Bar<Baz>::junk(Fred*)'
Run Code Online (Sandbox Code Playgroud)

有人可以解释之间的差异LD_LIBRARY_PATH-L?我想深入了解这些内容,所以非常感谢参考!

另外,我必须添加什么来链接线以避免使用LD_LIBRARY_PATH

编辑:当缺少目录时-L,编译器建议"尝试使用-rpath或-rpath-link".我不认为我以前见过makefile中的那些选项.你呢?不确定这是否有助于解决这个LD_LIBRARY_PATH问题.

linux linker gcc shared-libraries

23
推荐指数
3
解决办法
3万
查看次数

GLFW3 - 对XRR的未定义引用

我正在尝试编译一个使用GLFW3 的非常简单的OpenGL程序.尽管链接了我认为必要的一切,但我得到了大量未定义的引用.

/usr/local/lib/libglfw3.a(x11_gamma.c.o): In function `_glfwInitGammaRamp':
x11_gamma.c:(.text+0x49): undefined reference to `XRRGetScreenResources'
x11_gamma.c:(.text+0x6a): undefined reference to `XRRGetCrtcGammaSize'
x11_gamma.c:(.text+0x81): undefined reference to `XRRFreeScreenResources'
/usr/local/lib/libglfw3.a(x11_gamma.c.o): In function `_glfwPlatformGetGammaRamp':
x11_gamma.c:(.text+0xce): undefined reference to `XRRGetCrtcGammaSize'
x11_gamma.c:(.text+0xf1): undefined reference to `XRRGetCrtcGamma'
x11_gamma.c:(.text+0x198): undefined reference to `XRRFreeGamma'
/usr/local/lib/libglfw3.a(x11_gamma.c.o): In function `_glfwPlatformSetGammaRamp':
x11_gamma.c:(.text+0x24c): undefined reference to `XRRAllocGamma'
x11_gamma.c:(.text+0x303): undefined reference to `XRRSetCrtcGamma'
x11_gamma.c:(.text+0x30f): undefined reference to `XRRFreeGamma'
/usr/local/lib/libglfw3.a(x11_init.c.o): In function `initExtensions':
x11_init.c:(.text+0x1a67): undefined reference to `XRRQueryExtension'
x11_init.c:(.text+0x1a91): undefined reference to `XRRQueryVersion'
x11_init.c:(.text+0x1b25): undefined reference to `XIQueryVersion' …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glfw

7
推荐指数
1
解决办法
8221
查看次数

我如何在Linux上构建我的glfw3项目?

我已经使用cmake编译了glfw3和包含的示例,并且没有问题.写我的第一个项目.作为opengl和glfw的新手,对C和cmake没有经验,我很难理解示例构建文件,甚至要在我的项目中使用哪些链接和/或编译器参数.

假设我现在只有一个文件夹和一个文件boing.c.我怎么编译它?

简单的运行gcc -lglfw3 -lm -lGL -lGLU boing.c给出了一个未定义引用的墙,从sin和atan2开始,然后是各种gl和glfw的东西.我错过了什么?

我将如何编写makefile?是否有cmake模板或样本,我只是不明白如何使用或适应?有没有人知道使用glfw3的开源项目(或更好,一个小例子或模板) - 所以我可以环顾四周?

当我想在某个时候进入多平台时,我猜cmake会是最好的.但是我如何在没有太多麻烦的情况下获得编译**的东西,所以我可以开始学习一些教程..?

我是一个使用32位Ubuntu raring的温和的菜鸟.现在就使用Vim.

c cmake glfw

5
推荐指数
2
解决办法
2万
查看次数

设置eclipse链接器来编译和运行GLFW应用程序 - 如何?

基于这个问题,我能够为GLFW库制作一个默认的cmake编译,编译我的GLFW App并运行; 由于我使用的是Ubuntu 14.04 64位,所以一切正常并且是通过终端完成的.

我正在使用这一行来编译:

g++ -std=c++11 -c main.cpp
Run Code Online (Sandbox Code Playgroud)

这链接:

g++ main.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
Run Code Online (Sandbox Code Playgroud)

使用这些命令后我只需要执行main.exec.但是,我想设置eclipse来编译和运行这个GLFW应用程序.包含文件已在项目中确定,但我的链接器出现问题.我试图手动跟踪我的库(GL,GLU,glfw3 ....)来设置文件夹,但我找不到所有这些.有谁知道我怎么能跟踪库在我的链接器上设置它们(项目 - 属性 - C/C++构建 - 设置 - GCC C++链接器)或者可以给我一些指导来解决这种情况,好吗?

提前致谢

c++ eclipse linux linker glfw

1
推荐指数
1
解决办法
2316
查看次数

标签 统计

glfw ×3

c++ ×2

linker ×2

linux ×2

c ×1

cmake ×1

eclipse ×1

gcc ×1

opengl ×1

shared-libraries ×1