Archiv verlassen und diese Seite im Standarddesign anzeigen : dll erstellen aus *.c + *.h + make
Also was ich habe sind:
*.c und *.h files die ich bisher über ein make file verlinke und daraus
eine *.o baue die ich dann mit:
./prozess starte.
Wie kann ich das nutzen um daaus eine *.dll zu bauen und wie kann ich die dann einbinden.
System: gcc, suse 8.2 :confused:
SeeksTheMoon
17-08-2005, 13:41
wie das mit make geht weiß ich nicht, aber der gcc Parameter -shared sollte es tun.
gcc -shared -o libfoobar.so foo.c bar.c
anda_skoa
17-08-2005, 15:44
Ich glaube es wäre auch -fpic und -fPIC nicht schlecht
Im Makefile bei den CFLAGS eintragen.
Oder vielleicht einen Makefilegenerator benutzen und es dem überlassen.
Ciao,
_
gcc -shared -o libfoobar.so foo.c bar.c
??? "libfoobar.so foo.c bar.c" what´s this? :confused:
bitte mal erklären...
SeeksTheMoon
01-09-2005, 10:10
Foobar ist ein Internetstandard ;)
http://www.faqs.org/rfcs/rfc3092.html
Hallo...
Habe jetzt mit
gcc -shared filename.c
eine a.out Datei erhalten
Die headerdatei für filename.c lass ich vom main einlesen.
und mit
gcc main.c -o main1 -l a.out
wollte ich ganz dumm das outputfile linken???
Leider bekomme ich nur´ne Fehlermeldung.
Bei der Verwendung von
gcc -shared filename.c -o libfoobar foo.c bar.c findet gcc foo.c und bar.c nicht.
Okay, ist klar das ich die Dateien sicher dort zur Verfügung stellen muss. Mir ist nur nicht klar was die machen.
:o
findet gcc foo.c und bar.c nicht.Warum liest du die Links nicht? Naja, hier nochmal in deutsch:
http://de.wikipedia.org/wiki/Metasyntaktische_Variable
Für dich reicht wohl:
gcc -fPIC -DPIC -shared -o libmeinetollelib.so filename.c(hatte letztens das -fPIC vergessen, und das .so)
(Ich hätte wohl anstatt "foo" und "bar" besser "bla" und "blubb" genommen)
Ich hätte wohl anstatt "foo" und "bar" besser "bla" und "blubb" genommen
:eek: ich hatte leider nur leistungskurs in japanisch daher weis ich sowas nicht :( :eek: :o :cool:
das mit "meinschatz.so" hat jetzt geklappt.
Nächste Frage:
Wie binde ich die jetzt ein???
Vorschlag zur Güte:
1. cp meinschatz.so /usr/lib
2. in main.c die helloworld.h einbinden
3. make&./main=fertig :o
das mit "meinschatz.so" hat jetzt geklappt.libmeinschatz.so! Libraries beginnen immer mit lib
1. cp libmeinschatz.so /usr/local/lib
2. sicherstellen, dass /usr/local/lib in der /etc/ld.so.conf steht
3. ldconfig /usr/local/lib
4. helloworld.h includen
5. gcc main.c -lmeinschatz -o programmname
Schau dir mal automake in Verbindung mit libtool an. Das vereinfacht das alles, wenn man es erstmal kann.
Oder alternativ SCons.
:)
Es hat geklappt. Danke.
Was passiert beim ausführen von ldconfig?
1. der nachstehende Pfad wird in die /etc/Id.so.conf eingetragen?
2. es prüft die Lib´s im nachstehenden Pfad (/usr/local/lib)?
ja, "man ldconfig" aber vielverstanden habe ich da nicht. :(
ldconfig baut den Cache mit den shared objects
wollte gerne einen eigenen folder "/usr/local/lib/personal"
für meine Lib´s nutzen.
- habe die lib da rein kopiert
- /etc/ld.so.conf erweitert um diesen pfad
- mit ldconfig /pfad oben angegeben
Problem:
Er kann die Lib nicht finden???? :confused:
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.