"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Lib statisch in eigene Library linken - wie?

DJ_Cyberdance 29.05.2006 - 15:44 711 2
Posts

DJ_Cyberdance

Here to stay
Avatar
Registered: Jun 2002
Location: Vesterålen
Posts: 1838
Habe folgendes Problem: Habe einige wenige Funktionen der Glib in einigen Funktionen verwendet, die ich zu einer Library zusammenfassen möchte. Das funktioniert soweit ganz gut, allerdings möchte ich diese meine Bibliothek auch auf Systemen verwenden, auf denen keine Glib installiert ist.

Gibts also eine Möglichkeit, jene Funktionen der Glib, die ich in den Funktionen meiner Bibliothek verwende, in diese Bibliothek statisch reinzulinken? Wenn ja, wie tu ich das?

Momentan mach ich im Code nur ein #include <glib.h>. Mein Makefile sieht etwa so aus (irrelevante Teile weggelassen):

Code:
CC = gcc
DEBUG = -g
CFLAGS =  `pkg-config --cflags --libs glib-2.0` $(DEBUG)

library: part_1.o part_2.o
        ar rc libmylib.a part_1.o part_2.o

part_1.o: part_1.c
        $(CC) $(CFLAGS) -c part_1.c 

part_2.o: part_2.c
        $(CC) $(CFLAGS) -c part_2.c 

Mit "make library" bekomm ich ein File libmylib.a, wenn ich nun die entsprechenden Headerfiles in einem Programm include und mit -L. -lmylib linke, dann funktioniert das nur, wenn auch glib installed ist - sonst nicht.

Hoffe ich hab mich verständlich ausgedrückt, bin für jede Hilfe dankbar!

PS.: Weiß nicht ob ich das nach Linux oder nach Coding Stuff posten soll... Geht ja nicht um Programmcode im engeren Sinn... Ggf bitte moven.

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Wenn du gcc "-static" beim Bauen deiner Lib als Linker-Flag mitgibst, tut sich auch nicht das, was du dir wuenscht?

DJ_Cyberdance

Here to stay
Avatar
Registered: Jun 2002
Location: Vesterålen
Posts: 1838
Zitat von COLOSSUS
Wenn du gcc "-static" beim Bauen deiner Lib als Linker-Flag mitgibst, tut sich auch nicht das, was du dir wuenscht?

Weiß nicht - vielleicht? Würds gern ausprobieren, steh dabei aber schon vor dem nächsten Problem, hab natürlich ein .h-File, in dem die Signaturen der ganzen Funktionen in der Lib drinstehen. Und wundervollerweise sind da auch ein paar structs definiert:

Code:
typedef struct foo {
     GList* foobar
     ...
} bar;

Und da schreit der Compiler jetzt, weil er GList nicht kennt. Hab auch versucht, "extern" davorzuschreiben - erfolglos...

Code:
foo.h:12: error: ISO C++ forbids declaration of ‘GList’ with no type
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz