Simple Test Unix C++ Source Compilation and Makefile

Create 3 (*.C) files


/* main.C */
#include <stdlib.h>
#include
<stdio.h>
#include "1.h"

extern void test2();
extern void test3();

void test1()
{
}

int main()
{

test1();
test2();
test3();
exit (EXIT_SUCCESS);
}

/* 2.C */
#include "1.h"
#include "2.h"

void test2() {
}
/* 3.C */
#include "2.h"
#include "3.h"
void test3() {
}

Create 3 (*.h) files
touch 1.h
touch 2.h
touch 3.h

Then,

Create a makefile with content (note: <tab> should be a real tab. Tab is very important or else you will else funny compiler message)



testing123: main.o 2.o 3.o
<tab>g++ -o myapp main.o 2.o 3.o
main.o: main.C 1.h
<tab>g++ -c main.C

2.o: 2.C 1.h 2.h
<tab>g++ -c 2.C

3.o: 3.C 2.h 3.h
<tab>g++ -c 3.C


Then run

make -f makefile

then

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/apps/public/lib

(for C++ libraries since g++ is to compile CPP files)

Then, just run "testing123"

(note: In Unix, *. a is a static library where as *.so or *.sa is a shared library or dynamic DLL in Win32 term. To make the link to shared library permanently link to the binary. Use the configuration option --disable-shared)

To modify makefile above to create static lib file, makefile command as below
# Which compiler
CC = g++

# Where are include files kept
INCLUDE = .

# Options for development
CFLAGS = -g -Wall -ansi

# Local Libraries
MYLIB = lib.a

testing123: main.o $(MYLIB)
$(CC) -o testing123 main.o $(MYLIB) $(CFLAGS)

$(MYLIB): $(MYLIB)(2.o) $(MYLIB)(3.o)
main.o: main.C a.h
2.o: 2.C 1.h 2.h
3.o: 3.C 2.h 3.h

clean:
-rm testing123 main.o 2.o 3.o $(MYLIB)

Comments

Popular posts from this blog

Outlook : "operation failed, object could not be found. " when trying to close a PST.

How to transfer app and data from old iPhone to new iPhone for model IOS17 and IOS18 above.

Tips on how to use IBM iNotes (web client) on emailing or scheduling - Like copy tables from Excel or checking for user id (windows logon id) through email address