Makefile-Fehler : Befehl Nicht Gefunden - beim erstellen einer shared library

Ich habe 4 .c-Dateien hello.c,here.c,bye.c und main.c.
Eine header-Datei mylib.h

Die Inhalte sind wie folgt

Hallo.c

#include<stdio.h>

void hello()
{
    printf("Hello!\n");
}

hier.c

#include<stdio.h>

void here()
{
     printf("I am here \n");
}

bye.c

#include<stdio.h>

void bye()
{
    printf("Bye,Bye");
}

main.c

#include<stdio.h>
#include "mylib.h"

int main()
{ 

  hello();
  here();
  bye();
  return 1;
}

mylib.h

#ifndef _mylib_
#define _mylib_

void hello();
void here();
void bye();

#endif

Makefile erstellen Sie eine statische lib ist :
Makefile

#Which Compiler
CC = gcc

#Compiler Flags
CFLAGS = - Wall -c -fPIC

DYNLINKFLAGS = -shared -W1,-soname,$@.0

PROG = main

PROG_OBJS = main.c

LIB = mylib

LIB_FILES = libmylib.so

LIB_MINOR = $(LIB_FILES).0.1

LIB_RELEASE = $(LIB_MINOR).0

LIB_OBJS = hello.o here.o bye.o

PATH = /home/srinivasa/cspp51081/labs/srinivasa.lab2.1

all:    $(LIB_FILES) $(PROG)

#Create Lib with this file
$(LIB_FILES):   $(LIB_OBJS)
            $(CC) $(DYNLINKFLAGS) $^
            ln -sf $(LIB_RELEASE) $(LIB_MINOR)
            ln -sf $(LIB_MINOR) $@
            ln -sf $@ $@.0

#Compiling main program and link with shared library
$(PROG):        $(PROG_OBJS)
            $(CC) -o $(PROG) $(PORG_OBJS) -l$(LIB) -L$(PATH)

main.o:         main.c
hello.o:        hello.c
here.o:         here.c
bye.o:          bye.c

#clean files
clean:
            rm -rf $(LIB_OBJS) $(LIB_FILES) $(LIB_RELEASE) $(LIB_MINOR) libmylib.so.0

Problem: Wenn ich den Befehl ausführen

make -f Makefile all 

Bekomme ich die Fehlermeldung:

gcc-Wall -fPIC -c -o hello.o Hallo.c
make: gcc: Kommando nicht gefunden
Hersteller: * [Hallo.o] Fehler 127

Fragen : How do I resolve this?

  • Sind Sie sicher, dass Sie die Datei main.c im gleichen Verzeichnis, in dem Sie den make-Befehl?
  • ja, sehr viel.
  • Vielen Dank für den aufschlussreichen Kommentar. Ich glaube irgendwo das wichtigste.c-Datei gelöscht worden war. Ich habe jetzt geschrieben einen neuen main.c und in den Ordner geschoben. Aber jetzt bekomme ich 'gcc-Wall -fPIC -c -o hello.o Hallo.c make: gcc: Kommando nicht gefunden make: *** [hello.o] Fehler 127'
  • Jede chance, die Sie buchen können debug-make Ausgabe?
  • Das ist, weil Sie den Wert von PATH im Makefile. Die Schale ist nicht in der Lage zu finden, gcc, weil die. Versuchen Sie das umbenennen der variable PATH im Makefile um, sagen wir, LIBPATH (in allen Orten).
  • Danke, no way, dass ich, dass herausgefunden haben. Jetzt bekomme ich die Fehler - /usr/bin/ld: cannot find -lmylib collect2: ld returned 1 exit status make: *** [main] Error 1 Nicht sicher, warum der linker ist nicht in der Lage, die Datei zu finden.

Schreibe einen Kommentar