linux6.缺少命令行,linux – 链接错误:命令行中缺少DSO

我是Linux的新手(使用Ubuntu 14.04 LTS 64bit),来自Windows,我正试图移植我现有的CUDA项目.

通过链接时

/usr/local/cuda/bin/nvcc -arch=compute_30 -code=sm_30,compute_30 -o Main.o Display.o FileUtil.o Timer.o NeuralNetwork.o -L/usr/lib -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu -L/usr/local/cuda/lib64 -lGLEW -lglfw3 -lGL -lGLU -lcuda -lcudart

我遇到以下错误:

/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_clipboard.c.o): undefined reference to symbol 'XConvertSelection'

//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status

make: *** [CUDANN] Error 1

关于问题可能是什么的任何想法?

解决方法:

希望这对像我这样熟悉Linux并且没有发现任何与Linux相关的内容的人来说会有所帮助.

正如talonmies所指出的,我无法间接链接,因此需要指定我正在使用的库所需的任何其他库.也就是说,如果我链接库A,它需要库B和C,我需要链接所有三个库以使程序正确链接.

为了找到需要的其他库,我使用了pkg-config命令,为此我找到了一个指南here.运行pkg-config –print-requires –print-requires-private glfw3给出了以下输出,这是列表glfw3需要的包.

x11

xrandr

xi

xxf86vm

gl

然后,我通过运行pkg-config –libs,然后运行库的名称,找到了我需要包含的库.例如,pkg-config –libs x11 yielding -lX11.

注意:您可以将多个项目作为输入传递给pkg-config,这样就可以了

pkg-config --libs $(pkg-config --print-requires --print-requires-private glfw3)

将打印出您需要链接的所有其他库(-lX11 -lXrandr -lXi -lXxf86vm -lGL).

我的程序现在成功链接,我希望这对有类似问题的任何人都有帮助.

标签:linux,linker,x11,glfw,nvcc

来源: https://codeday.me/bug/20190922/1813303.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值