anubhav nidaria
anubhav nidaria

Reputation: 29

compile and run c++ program with own header files in linux

This is my first go at making my own header file. I am trying to make a simple Hello World program in C++ on Ubuntu. made 3 files as follows :

//hello.h file

#ifndef HELLO_H
#define HELLO_H

//my own code

void hello();

#endif

//hello.cpp file

#include <iostream>
#include "hello.h"

using namespace std;

void hello()
{
    cout << "This line is printed from header.";
}

//main.cpp file

#include <iostream>
#include "hello.h"

using namespace std;

int main()
{
    cout << "in main" << endl << endl;
    hello();
    return 0;
}

I've tried

g++ -I /home/Desktop/hello/ -c hello.cpp -o hello.o

to compile header file and this command worked.

then, while doing

g++ -o main main.cpp

I am ending up with following error:

/tmp/ccb0DwHP.o: In function `main':
main.cpp:(.text+0x2e): undefined reference to `hello()'
collect2: error: ld returned 1 exit status

Please suggest whether changes need to be made in any file or in any command in the terminal?

thank you

Upvotes: 1

Views: 38670

Answers (3)

jainath kumhar
jainath kumhar

Reputation: 1

To compile and run a C language program, you need a C compiler. To setup a C language compiler in your Computer/laptop, there are two ways:

Download a full fledged IDE like Turbo C or Microsoft Visual C++, which comes along with a C language compiler. Or, you use any text editor to edit the program files and download the C compiler separately.

Upvotes: -2

Ningrong Ye
Ningrong Ye

Reputation: 1257

Put hello.h in Path2Hello;

g++ -o main -I Path2Hello main.cpp hello.cpp

ps: -I option to specify an alternate include directory (for header files).

Upvotes: 0

Frank Zhang
Frank Zhang

Reputation: 509

You don't link to hello.o in the command below:

g++ -o main main.cpp

Try this:

g++ -o main main.cpp hello.o

Or for such simple program, just issue the command below:

g++ -o main main.cpp hello.cpp

For ease of use, create a makefile, then you just run make:

make

A simple makefile:

helloprogram: hello.h hello.cpp main.cpp

    g++ -o helloprogram main.cpp hello.cpp

clean:

    rm helloprogram

Upvotes: 9

Related Questions