CUDA编译器对象可执行
CUDA Compiler Object to Executable
我正在尝试获取使用命令行进行编译的CUDA应用程序,但我有麻烦。
我知道运行命令
nvcc -ccbin "C:Program Files (x86)Microsoft Visual Studio 14.0VCbin" -c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Od,/Zi,/MTd -o test.obj test.cu
从我的批处理文件中生成一个OBJ文件,我需要使用链接器来制作可执行文件。我在Visual Studio上遇到了不可修复的问题,所以我试图避免使用它,但是我不知道如何完成编译程序。
我需要知道的是:我该如何处理对象文件才能到达可执行文件我可以实际运行的可执行文件?
假设您的test.cu
是一个完整的应用程序(例如具有main
函数等(,对您的命令行的两个更改可能是删除-c
Switch并更改-o
交换机以指定指定典型的Windows文件可执行名称,例如test.exe
,即-o test.exe
。
以下测试案例在Windows 7,CUDA 8和VS 2015上演示了这一点:
C:UsersbobDocuments>type test.cu
#include <stdio.h>
__global__ void t(){
printf("hellon");
}
int main(){
t<<<1,1>>>();
cudaDeviceSynchronize();
printf("%sn", cudaGetErrorString(cudaGetLastError()));
return 0;
}
C:UsersbobDocuments>nvcc -ccbin "C:Program Files (x86)Microsoft Visual Studio 14.0VCbin" -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xc
ompiler /EHsc,/W3,/nologo,/Od,/Zi,/MTd -o test.exe test.cu
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-depreca
ted-gpu-targets to suppress warning).
test.cu
Creating library test.lib and object test.exp
C:UsersbobDocuments>test
hello
no error
C:UsersbobDocuments>
请注意,即使是-o
开关的更改也不是严格必要的。此开关仅指定输出文件 name ,并且对实际编译流(在这种情况下是由-c
Switch的存在或不存在所控制的(。您可以通过将-o
开关按原样留下来证明自己。然后,您将拥有一个名为test.obj
的可执行文件,您可以通过在命令提示符下键入test.obj
来证明自己。它将以与上面显示的输出相同的输出执行。
但它可能令人困惑,并且不是Windows的典型文件命名约定。
相关文章:
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 如何使字符串出现在编译的二进制可执行文件的开头?
- mingw32-make 使用"MinGW Makefiles"生成器跟踪 CMAKE 无法将可执行文件链接到对象库
- CUDA编译器对象可执行
- C++模板的对象代码是否在可执行文件和动态库中重复?
- C++ 可执行文件错误:无法打开共享对象文件:没有此类文件或目录
- makefile:不同目录中的CPP文件,将对象文件重定向为./obj,并且可执行到./bin
- 如何将C++对象文件链接到C可执行文件
- "make"的输出是一个共享对象,而不是可执行文件
- 无法写入可执行对象的当前目录中的文件夹
- cmake,我可以从可执行对象构建一个库吗?
- 两个 C++ 可执行对象之间的实时数据通信,一个是 Windows 和另一个在虚拟机 Ubuntu 中
- 如何创建生成文件,为对象和可执行文件指定不同的目录
- 为什么 GNU ld 在链接可执行文件和共享对象时以不同的方式解析符号
- 如何找到C++可执行文件的所有对象(类对象/结构)
- 代码对象和可执行文件的区别
- Android OS框架-将单个可执行文件构建为共享对象
- GCC可以编译和运行源代码而不生成对象或可执行文件吗?