2016-04-15 10 views
0

ich gerade an einer Aufgabe arbeiten, die mir ein Makefile zu bauen erfordert, dassschwerwiegende Fehler beim Ausführen ein Makefile

  • ein Verzeichnis
  • Kopien math330.h-Datei in das Verzeichnis include
  • erstellen umfassen schafft ein lib
  • die .c-Dateien in trig und exp als
  • machen eine Bibliothek
  • installieren Sie die Bibliothek Objektdateien kompilieren in das lib Verzeichnis
  • das cli Programm gegen die
  • Verzeichnis enthalten und Bibliothek kompilieren

Also für die ich die meisten der Codierung nach unten für diese, aber ich halte Fehler, wenn ich immer versuchen, die .o des setzen trig-Funktionen im Include-Ordner. Der Fehler ist

trig/cos330.c:1:10: fatal error: 'math330.h' file not found 

Dies ist nur der letzte Teil, ich brauche Hilfe mit! Kann mir jemand Hinweise geben, was ich tun kann? Vielen Dank!

all: 
    mkdir -p ./include 
    mkdir -p ./lib 
    cp math330.h ./include 
    gcc -l ./include/ -c trig/*.c 
    gcc -l ./include/ -c exp/*.c 
    mv *.o ./lib/ 
    ar r libmath.a lib/* 
    mv libmath.a lib/ 
    gcc -l ./include/ cli/cli.c -L ./lib -lmath -lm 

clean: 
    rm -rf include 
    rm -rf lib 
    rm a.out 
+1

Die Option '-l' sieht falsch aus. Du willst '-I' und/oder vielleicht' -L'? – tripleee

+0

Das ist definitiv keine gute Möglichkeit, ein Makefile zu erstellen. Bitte lesen Sie eine Einführung zum Schreiben von Makefiles oder finden Sie hier Fragen zu SO - es gibt eine große Auswahl. Und bitte lösche keine Fragen, sobald du eine Antwort bekommst. es ist kein Rezept für die langfristige Popularität. –

Antwort

1

Die Option, geben Sie ein Verzeichnis enthalten ist kapital I (I), nicht Klein L (l).

Der Kleinbuchstabe gibt einen Bibliotheksnamen an. Gegeben -l ./include, würde der schlechte Linker eine schizophrene Zeit haben, um nach einer Bibliothek lib./include.a oder lib./include.so zu suchen, um mit (möglicherweise im Verzeichnis ./lib) zu verbinden, und es würde es wahrscheinlich nicht finden. Aber so weit kommt es nicht.