Zolo Skrevet 21. april 2007 Del Skrevet 21. april 2007 Hvordan kan eg lage mitt egent biblitek under linux.? Dersom eg har en cpp fil som inneholder en standard helloWorld() så skulle det vel gå å lage et bibliotek av denne. Slik at eg kan lage et annet program #include <hello.h> main(){ Hello(); } Og dette kompileres vel da noe slik: gcc test.cpp -o prog -lhello Men lurer på hvordan biblioteket kan lages? Lenke til kommentar
JBlack Skrevet 21. april 2007 Del Skrevet 21. april 2007 (endret) Hmmm... dette er så lenge siden. Men statisk bibliotek trodde jeg man kunne lage slik.... $ gcc -c hello.c $ ar r libtest.a hello.o $ gcc -L ./ -ltest main.c -o test /tmp/ccIVa2a0.o: In function `main': main.c:(.text+0x12): undefined reference to `hello' collect2: ld returned 1 exit status Men dette funker: $ gcc hello.o main.c -o test $ ./test Hello world main.c void hello(); int main(){ hello(); return 0; } hello.c #include <stdio.h> void hello(){ puts("Hello world"); } Endret 21. april 2007 av JBlack Lenke til kommentar
☀ ❄ Skrevet 21. april 2007 Del Skrevet 21. april 2007 Hvis du skal ha et statisk bibliotek, dvs. en .a-fil, bruker du ar, f.eks. slik: ar rcs mittbibliotek.a objektfilen.o objektfilto.o objektfiltre.o Om du skal lage et delt bibliotek, dvs. en .so-fil, er det litt mer du må gjøre. Du kan lese denne HOWTO-en for en grundigere forklaring. Lenke til kommentar
JBlack Skrevet 21. april 2007 Del Skrevet 21. april 2007 $ gcc -L ./ -ltest main.c -o test 8435738[/snapback] $ gcc -L ./ main.c -ltest -o test The devil's in the details Lenke til kommentar
Dead_Rabbit Skrevet 21. april 2007 Del Skrevet 21. april 2007 Eventuelt kan du gjøre det enkelt ved å bruke SCons. SConstruct-fil: env = Environment() env.SharedLibrary('mittbibliotek', ['jabba.cpp', 'dabba.cpp', 'doo.cpp']) $ scons Dette lager et delt bibliotek ved navnet mittbibliotek.so. Eventuelt kan man bruke "env.StaticLibrary(...)" hvis man vil ha et statisk bibliotek. Lenke til kommentar
Zolo Skrevet 21. april 2007 Forfatter Del Skrevet 21. april 2007 Eventuelt kan du gjøre det enkelt ved å bruke SCons. SConstruct-fil: env = Environment() env.SharedLibrary('mittbibliotek', ['jabba.cpp', 'dabba.cpp', 'doo.cpp']) $ scons Dette lager et delt bibliotek ved navnet mittbibliotek.so. Eventuelt kan man bruke "env.StaticLibrary(...)" hvis man vil ha et statisk bibliotek. 8438881[/snapback] sCons ser jo kjempebra ut Lenke til kommentar
Dead_Rabbit Skrevet 22. april 2007 Del Skrevet 22. april 2007 Det er kjempebra. Ganske stilig hvordan SConstruct-fila mer eller mindre er et Python skript også. (Nesten ihvertfall). Heh. http://www.scons.org hvis du ikke allerede har vært innom der.. Lenke til kommentar
Zolo Skrevet 22. april 2007 Forfatter Del Skrevet 22. april 2007 Det er kjempebra. Ganske stilig hvordan SConstruct-fila mer eller mindre er et Python skript også. (Nesten ihvertfall). Heh. http://www.scons.org hvis du ikke allerede har vært innom der.. 8441039[/snapback] Var den sida eg søkte opp Får ta og oppdatere makefiler for openGL scengraf prosjektet mitt etter hvert. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå