g++(nvcc) 链接库文件

来源:互联网 发布:mac mini性能如何 编辑:程序博客网 时间:2024/06/05 15:27

查了一晚上的资料终于把库文件给链接上了,这里做一下总结.

编译CUDA源程序发现cannotopen shared object file错误,后来发现cuda所要使用的库文件放在/usr/local/cuda目录下,而不是在默认的路径下,于是就在编译时用编译选项指定的库文件的目录,和所使用的库如下所示:

-L/usr/local/cuda/lib-lcudart ( 这里要说明我所要使用的库是libcudart.so.4)

设置的这个选项后又出现/usr/bin/ld :skippingincompatible /usr/local/cuda/lin/libcudart.so的错误,网上一查原来是因为我的机器是64位于该目录下32位的版本不兼容,cuda目录下有两个库目录lib和lib64,分别都有相应的文件,于是就把目录改成-L/usr/local/cuda/lib64,改完之后发现还是cannot open shared object file 错误,此时我是相当郁闷,为什么还是找不到呢,原来是-lcudart只能默认连接到libcudart.so文件上如果要连接到libcudart.so.4需要自己用ln -s编写一个符号连接,可是lib64下已经有了libcudart.so,根本无法建立这个符号连接,此时又在网上查了一番,发现了另外一种方法,将libcudart.so.4的目录添加到/etc/ld.co.conf中或者在 /etc/ld.so.conf.d/ 下新建一文件,如 XXX.conf ,其内容是libXXX.so.4所在的目录,然后运行ldconfig命令,这下问题终于解决了。

附带:

ldconfig是一个动态链接库管理命令

为了让动态链接库为系统所共享,还需运行动态链接库的管理命令–ldconfig
ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态 链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.


原文地址:http://blog.csdn.net/lily854212198/article/details/8054326

0 0