linxu下CUDA静态库-下

    本机系统环境: 

lucas@lucas-wellcom:/usr/local/cuda/lib64$ cat /proc/version
Linux version 3.13.0-40-generic (buildd@comet) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #69-Ubuntu SMP Thu Nov 13 17:53:56 UTC 2014
lucas@lucas-wellcom:/usr/local/cuda/lib64$ cat /etc/issue
Ubuntu 14.04.1 LTS \n \l

lucas@lucas-wellcom:/usr/local/cuda/lib64$ 

    在这里,有一篇关于linux下cuda静态库的文章,但是在文章中,链接的CUDA库确是动态的,链接的是libcudart.so,这样的话,电脑上需要的环境是:

         1、电脑有支持CUDA的NVIDIA的GPU

         2、安装了CUDA toolkit的开发包(libcudart.so的动态库是在/usr/local/cuda/lib*中)

    从CUDA5.5开始,支持static library。如果查看/usr/local/cuda/lib64下,可以看到:


      眼尖的同志们应该看到了lbcudart_static.a的静态库。

       现在我们就利用这个静态库把我们的CUDA程序也编译成静态的库供第三方调用。

       测试例子结构如下:

           

        事先我把lbcudart_static.a拷贝到工程路径下,在工程中有test文件夹中的内容,随后讲解。static_gpu.cu的内容如下:

      

      Makefile和static_gpu.h的内容如下:

    

    为了把cuda的静态库和自己的库弄成一个静态库,在这我弄了一个讨巧的办法:

    

ar x libcudart_static.a
   获得了libcudart_static.a.o,把此文件和自己的代码生成的.o文件一起弄成静态库。

   

   以上操作,生成了libstatic_gpu.a的静态库。现在我们来看看test文件夹中的内容:

          

  上一步生成的libstatic_gpu.a静态库,main_static_gpu.cpp 和Makefile的内容如下:


  cuda的静态库依赖了其他的库,所以才会有-ldl -lpthread -lrt


我们查看下LD_LIBRARY_PATH的环境变量:


更了对比,我们对比下这里的例子,我们执行程序:


因为LD_LIBRARY_PATH变量没有cuda动态库的路径,所以程序执行时找不到cuda的动态库。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值