Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

ich soll gerade in einem Projekt aus mehreren .c Dateien eine shared librarie mit der Endung .so erstellen. Ich hab auch schon ein wenig gegoogelt, leider nur komische Befehle gefunden, mit denen ich nichts anfangen konnte :)

hier ein paar Beispiele:

gcc -fPIC -c xxx.c xxy.c

ld -shared -soname yyy.so -o yyy.so xxx.o xxy.o

gcc x.o -L . -lfb

ich hoffe ihr könnt mir helfen :D

Varrius

Geschrieben

gcc -fPIC -c xxx.c xxy.c

Damit wird eine Objektdatei aus dem Quellcode erzeugt, welche "Position Independent Code" ("PIC") enthält. Dies ist notwendig, um eine Shared Library an eine beliebige Stelle im Speicher laden zu können.

ld -shared -soname yyy.so -o yyy.so xxx.o xxy.o

Damit wird eine Shared-Library mit dem Namen "yyy.so" aus den Objektdateien "xxx.o und xxy.o" erzeugt und in der Shared-Lib "yyy.so" abgespeichert.

gcc x.o -L . -lfb

damit linkst Du die Library "fb" (mit dem Namen "libfb.so" bzw. "libfb.a"), welche sich im aktuellen Verzeichnis befindet ("-L.") zu einer Objektdatei mit dem Namen "x.o". Wobei hier eigentlich noch der Name des Programms mit angegeben werden sollte: "gcc -o program x.o -L. -lfb"

Nic

Geschrieben

k, das hab ich nun ein wenig verstanden ;)

aber wo muss ich diese befehle eingeben, beim "cmd" kennt er die befehle nicht oder muss ich die unter linux oder unix machen :confused:

Geschrieben

k, das kriegen wir schon hin ;)

das problem ist, wir haben eine .so-datei und wollen diese erneuern, finden aber irgendwie die datei zum erstellen nicht (also die .c dateien)

besteht die möglichkeit eine solche datei zu "dekompilieren" ?

Geschrieben

ich hab den burger mal gegessen und die kuh tod sein lassen ;)

nein, wir konnten nun nachvollziehen, wie diese .so erstellt wurde, da wir ein nettes script gefunden haben :D

das problem ist nun, das die neue .so datei von 2,6 auf 2,1 MB "schrumpft" ist, sprich als die datei vor 2 jahren erstellt wurde war sie 2,6MB und heute war sie nur 2,1MB

kann das an den seit damals verbesserten compilern liegen? da sich die dateien eigentlich nicht geändert haben dürften bzw. weg sind, da das mit clearcase nachzuvollziehen wäre, wir aber nix gefunden haben

Geschrieben

Hallo,

das kann an vielen Dingen liegen. Eine Möglichkeit ist, dass ihr den Quellcode 1x mit Debugging-Informationen und 1x ohne diese erstellt (compiliert) habt (Compiler-Switch "-g").

Nic

Geschrieben

kann das an den seit damals verbesserten compilern liegen? da sich die dateien eigentlich nicht geändert haben dürften bzw. weg sind, da das mit clearcase nachzuvollziehen wäre, wir aber nix gefunden haben

Kann es durchaus. Aktuelle Versionen des GCC haben ziemlich gute Optimierungen in Richtung Dead-Code-Elimination und Schleifenoptimierung.

Zwar ist eine Reduzierung um knapp 20% schon sehr aussergewoehnlich, aber nicht ausgeschlossen.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...