[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] konstruktion af et library



Sune Fischer skrev:

> Jeg har samlet en bunke rutiner i en håndfuld
> cpp-filer og lagt dem i en mappe: ~/C++/SFlib
> 
> Nu er sagen at jeg ønsker at kalde disse funktioner
> fra programmer i andre mapper. Jeg har kompileret alle
> filerne i SFlib til objektfiler, og inkluderet deres
> header i det program der skal kalde rutinerne.
> Dette virker (forståeligt nok) ikke. Det hele
> kompilerer ganske fint, men linkeren har et problem,
> for den er ikke klar over, at den skal lede i en anden
> mappe for at finde den relevante objektfil.
> 
> Hvad gør jeg (udover at kopiere hele møget ind i samme
> mappe)?
> Kan man lave en library-objektfil, eller skal man bare
> give det rigtige flag til linkeren, spiller
> /sbin/ldconfig en rolle??? 

Man kan samle alle objektfilerne i et statisk library
(.a) med `ar'. På linux skal man derefter køre ranlib
på det for at få genereret et index.

ar cru SFlib.a *.o
ranlib SFlib.a (ar -s gør vist det samme)

Dernæste kan man flytte SFlib.a til f.eks. /usr/local/lib så
den bliver fundet automatisk når man linker med -lSF.
Alternativt kan man lade den ligge og linke med
-L/path/til/SFlib -lSF

Hvis man istedet vil lave et shared library (.so), skal
man kompilere *.c med gcc -fpic og linke dem sammen til
en .so fil. Det resulterende library kan enten flyttes
til f.eks. /usr/local/lib, og ldconfig køres, eller
man kan lade det ligge og sætte path til det i shell
environment variablen LD_LIBRARY_PATH.

I begge slags biblioteker kan man liste symbolerne med nm.

Hvis du har nogle tilhørende include filer som skal genbruges,
kan pathen til dem angives i Makefile,
CFLAGS = -I/path/til/SFlib  bl.a. bla.a.

Jeg håber ikke jeg fik skrevet noget sludder. Det er
for længe siden jeg har rodet med det.

-- 
torben fjerdingstad        | linux-2.3.99-pre3/GNU/gnome-1.0
sslug@sslug        | linux får den op og stå


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:08 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *