我正在尝试配置Eclipse,以便在一个项目中编译共享库并在另一个项目中使用它。
问题是,使用Eclipse的CUDA插件只能选择生成项目类型的可执行文件。
所以我想做的是创建这样一个项目并修改该工具链,以便Eclipse不执行除nvcc
以外的任何其他操作。
正如您所看到的,编译库不是问题:
18:27:25 **** Incremental Build of configuration Default for project cudamath ****
make all
Building file: ../test.cu
Invoking: CUDA NVCC Compiler
nvcc --shared -Xcompiler -fPIC -o "cu_test.o" "../test.cu" && \
echo -n 'cu_test.d' ./ > 'cu_test.d' && \
nvcc -M "../test.cu" >> 'cu_test.d'
nvcc warning : The 'compute_10' and 'sm_10' architectures are deprecated, and may be removed in a future release.
nvcc warning : The 'compute_10' and 'sm_10' architectures are deprecated, and may be removed in a future release.
Finished building: ../test.cu
问题是Eclipse然后调用g++
,这是我要切断的工具链的一步:
Building target: cudamath
Invoking: C++ Linker
g++ -L/opt/cuda/lib64 -o "cudamath" ./cu_test.o -lcuda -lcublas -lcudart
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.0/../../../../lib/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
makefile:32: recipe for target 'cudamath' failed
make: *** [cudamath] Error 1
有没有办法可以做到这一点?我一直在浏览我的项目设置,但我似乎无法找到我正在寻找的内容。
答案 0 :(得分:1)
以下是我使用Nsight Eclipse Edition 所做的事情:
testlib
)testlib
项目int main() {
更改为int myfunc(){
libtestlib.so
。