想把几个cuda的源文件搞成一个动态库,用nvcc将各个库都编译成了o文件,可是连接的时候出现了错误:.rodata can't used when making a shared object;
rodata是常量数据段(read only data),检查了代码,没有出现常量。很奇怪,后来在网上找到该问题的解答:在编译cu文件为o文件时,加上选项--compiler-options ‘-fPIC’。
问题就得到了解决。
连接o文件时,用的是g++,选项开了-fPIC -shared。