Wednesday 26 September 2012

HowTo Shared Library in Linux

Library Name : hello

filename : hello.c

#include <stdio.h>

void Hello()
{
  printf("Hello World .. How are you 1\n");
}
======================================
Header File:

hello.h

#ifndef __HELLO_H
#define __HELLO_H

void Hello(void);

#endif

===============================

Application :

filename : app.c

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

int main()
{

  Hello();

  return 0;
}

====================================

Makefile:

VERSION = 1
MINORVER = 1
RELEASEVER = 1

LIBNAME = libhello
DYLIBSUFFIX = so

SONAME = $(LIBNAME).$(DYLIBSUFFIX).$(VERSION)
REALNAME = $(SONAME).$(MINORVER).$(RELEASEVER)

MAJORNAME = $(SONAME)
DYLIBNAME = $(LIBNAME).$(DYLIBSUFFIX)


OBJS = hello.o

all: $(LIBNAME)

$(LIBNAME): $(OBJS)
  $(CC) -shared -Wl,-soname,$(SONAME) -o $(REALNAME) $(OBJS)
  ln -sf $(REALNAME) $(MAJORNAME) && ln -sf $(MAJORNAME) $(DYLIBNAME)

hello.o: hello.c
  $(CC) -fPIC -c -g -Wall hello.c

app: app.o
  $(CC) -o $@ app.o -L./ -lhello

clean:
  -@rm *.o

distclean:  clean
  -@rm libhello.so* app




1 comment: