lib ohne main() kompilieren?
-
Hallo,
ich möchte eine Device Driver Library kompilieren.
Der Quellcode beinhaltet nur einige (Hilfs-)Funktionen, aber keine main().
Logischerweise bekomme ich eine "undefined reference to `main'" Fehlermeldung.Wie kompilier ich das?
-
Indem du dem Linker sagst, das er eie Library erstellen soll und keine Anwendung.
-
Nathan schrieb:
Indem du dem Linker sagst, das er eie Library erstellen soll und keine Anwendung.
Nein, man linkt überhaupt gar nicht. Das bedeutet in der Regel, dem Compiler zu sagen, dass er den Linker nicht aufrufen soll. Beim GCC zum Beispiel mit dem Schalter -c, der besagt, dass nur compiliert werden soll.
(@Nathan: Ja, das ist sicher das, was du meintest, aber man sollte hier schon technisch korrekt bleiben).
-
Ja danke,
ich kompiliere halt mir einer großen Makefile, die nicht von mir stammt.
Tatsächlich erzeugt der mir eine libfoo.a , aber danach folgt die Fehlermeldung "undefined reference to `main'".
Soll ich darauf pfeifen und einfach die libfoo.a benutzen, oder ist die lib evtl. sinnloser Müll?
-
Die libfoo.a wird deiner Beschreibung nach korrekt erstellt. Danach wird anscheinend versucht noch irgend etwas anderes zu erstellen, was nicht gelingt. Was und warum, darüber können wir hier nur spekulieren, wenn du es uns nicht sagst.
Du kannst ja einfach mal in die Bibliothek gucken (man: nm), ob da alle Symbole drinstehen, die du möchtest.