Frage

Ich arbeite an einem C-Projekt mit rund 30 Quelldateien (.c). Ich baue dieses Projekt auf einem 32-Bit-Mikrocontroller (i.MX515) läuft auf Ubuntu GNU-Tools.

Die Kompilierungsphase erfolgreich abgeschlossen wird, jedoch, wenn der Verbindungsvorgang beginnt ich diesen Fehler (nur für Voll Fehler am Ende des quesiton) :

In function `_start': init.c:(.text+0x30): undefined reference to `main'

Ich habe eine main() Funktion, die eine einfache printf() der Fall ist.

Meine Makefile Linie für die Verbindung, sieht wie folgt aus.

final: $(OBJDIR)/main.o $(OBJDIR)/TchClaKnn_BuildKdtreeInt.o $(OBJDIR)/TchClaKnn_FreeKdtreeInt.o.... (Go upto 30 files like this)
    @echo ".Linking"
    $(CC) $(LFLAGS) -o $(OBJDIR)/main.o $(OBJDIR)/TchClaKnn_BuildKdtreeInt.o $(OBJDIR)/TchClaKnn_FreeKdtreeInt.o..... (Go upto 30 files like this)

Hilfe !!!

Viele Grüße

Vikram


Komplette Verknüpfungsfehler

/usr/lib/gcc/arm-linux-gnueabi/4.3.3/../../../crt1.o: In function `_start':
init.c:(.text+0x30): undefined reference to `main'
collect2: ld returned 1 exit status
make[1]: *** [final] Error 1
make[1]: Leaving directory `/home/ubuntu/Documents/Project/IMX_Project_v1'
make: *** [all] Error 2
War es hilfreich?

Lösung

letzte ist abhängig von main.o (und ein paar anderen), aber, Ihre Make-Datei nimmt alle die ‚andere‘ und Ausgeben von ihnen in main.o (das ist, was -o funktioniert in den meisten Compiler)

bearbeiten Sie Ihre Verbindungslinie an: -o final $(OBJDIR)/main.o

Andere Tipps

Der Linker kann nicht den Objektcode für die Quelle finden, die in ihm main () definiert hat. Wahrscheinlich ist es nicht kompiliert zu werden. Überprüfen Sie, ob je nachdem, was der 30-Dateien ist es, dass hat main () in es wird immer in.OBJ zusammengestellt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top