Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Sample Make file for Solaris gcc shared library

Posted on 2001-07-10
7
778 Views
Last Modified: 2013-12-05
I am looking for simple working example of a sample makefile which will compile a simple c file into a shared library using the gcc compiler on solaris. using ELF format


// sample program to create a libary

#include <stdio.h>

void ExecuteRequest(void)
{
    printf("Invoked application exported function\n");
}

thanks
Matthew
0
Comment
Question by:MJUNG
  • 4
  • 3
7 Comments
 
LVL 5

Expert Comment

by:garboua
ID: 6270447
all:
<tab> gcc -c ExeccuteRequest.c
<tab> ar -cr libYourLibName.a ExeccuteRequest.o

this is a very simple makefile to create LibYourLibName.a
the first "lib" in library name is a Must.
you can use the following if you have more than one file to populate the library.

FILES = one.c \
         two.c \
         three.c \
         another.c
OBJS = (FILES.c=.o)

.c.o:
<tab> gcc -c $< -o $@
then you can
ar -cr libYourLibName.a $(OBJS)
which will take all you object files and stick em into the library.  now OBJS is build depending on FILES. and the .c.o: will know how to produce each obj.  
0
 

Author Comment

by:MJUNG
ID: 6270462
Hello Garboua

I am look ing for one that produces a shared library
using the -fPIC ELF format ? Do I still need to use the ar ?
Matthew

0
 
LVL 5

Expert Comment

by:garboua
ID: 6270537
NO,
you do this
"gcc -shared -fPIC ExeccuteRequest.c -o libMySTUFF.so"
sorry should have read better.
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 

Author Comment

by:MJUNG
ID: 6270557
Another Question

You stated that the name of the library must begin with the literal lib. Why is this ?
0
 
LVL 5

Accepted Solution

by:
garboua earned 200 total points
ID: 6270627
when you link you will do something like this
"gcc mainDriver.o -lMySTUFF -o OUTPUT"
and the linker knows to look for something that begins with lib-MySTUFF-.extension ".a .so"
so there is no Way around that, it is just the way of the Penguins :-)
Take a look under /lib and /usr/lib and you will see all libraries begin with "lib" and then the extension.
CIAO
0
 

Author Comment

by:MJUNG
ID: 6270636
Ok thanks for your help
I will do some more reading
but your help is greatly apprciated!
0
 
LVL 5

Expert Comment

by:garboua
ID: 6270706
:-)
"man ld" will give you libraries option and how to include them, the difference between "-L" and "-l" etc etc
the Most single Important Document that you can have is
http://www.linuxguru.com/docs/howto/GCC-HOWTO
search for ELF and you will find TONS of info, more than you might need. it also include info about other stuff. a very good document.  short sweet to the points.
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Attention: This article will no longer be maintained. If you have any questions, please feel free to mail me. jgh@FreeBSD.org Please see http://www.freebsd.org/doc/en_US.ISO8859-1/articles/freebsd-update-server/ for the updated article. It is avail…
Installing FreeBSD… FreeBSD is a darling of an operating system. The stability and usability make it a clear choice for servers and desktops (for the cunning). Savvy?  The Ports collection makes available every popular FOSS application and packag…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question