Trouble compiling helloworld.cu
You need to include stdio.h
or cstdio
not iostream
(which is for std::cout
stuff) for printf
(see man 3 printf
). I found the source code for the book here.
chapter03/hello_world.cu
is actually:
/*
* Copyright 1993-2010 NVIDIA Corporation. All rights reserved.
*
* NVIDIA Corporation and its licensors retain all intellectual property and
* proprietary rights in and to this software and related documentation.
* Any use, reproduction, disclosure, or distribution of this software
* and related documentation without an express license agreement from
* NVIDIA Corporation is strictly prohibited.
*
* Please refer to the applicable NVIDIA end user license agreement (EULA)
* associated with this source code for terms and conditions that govern
* your use of this NVIDIA software.
*
*/
#include "../common/book.h"
int main( void ) {
printf( "Hello, World!\n" );
return 0;
}
Where ../common/book.h
includes stdio.h
.
The README.txt
file details how to compile the examples:
The vast majority of these code examples can be compiled quite easily by using NVIDIA's CUDA compiler driver, nvcc. To compile a typical example, say "example.cu," you will simply need to execute: > nvcc example.cu
The issue is that the compiler does not know where to find printf
function. It
needs to know where to find it. The include
directive is used to tell the compiler where to find it.
#include "stdio.h"
int main(void) {
printf("Hello World!\n");
return 0;
}
After the fix, it would work:
$ nvcc hello_world.cu
$ ls
a.out hello_world.cu
$ a.out
Hello World!