Eclipse:编辑工具链(删除构建步骤以为CUDA创建共享库)

时间:2014-06-03 14:31:19

标签: c++ eclipse cuda

我正在尝试配置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 

有没有办法可以做到这一点?我一直在浏览我的项目设置,但我似乎无法找到我正在寻找的内容。

1 个答案:

答案 0 :(得分:1)

以下是我使用Nsight Eclipse Edition 所做的事情

  • 文件...新的CUDA C / C ++项目
  • 在下一个对话框中,选择共享库...清空项目,并为项目命名(让我们说它是testlib
  • 完成该向导/对话框。在左侧的项目资源管理器中创建了一个新的testlib项目
  • 在左侧的项目浏览器中,右键单击项目名称并为源文件创建新文件夹
  • 打开该文件夹并创建新的源文件。为此,我使用CUDA bitreverse"模板"选择了一个CUDA C / C ++源文件。这将创建一个包含bitreverse代码的新源文件。
  • 将源文件中的int main() {更改为int myfunc(){
  • 保存源文件并构建项目。已成功构建新的libtestlib.so