Guider

Fix: Ingen mål spesifisert og ingen makefile funnet.

Enten du jobber med Ubuntu, Debian eller Red Hat, kan det hende du ser en feil som lyder: *** Ingen mål spesifisert og ingen makefile funnet. Stoppe. Siden dette er et generelt problem relatert til GNU Make som helhet, kan det hende du ser det på utallige Unix-implementeringer. Det betyr at det ikke er en fil kalt makefile eller Makefile i din nåværende arbeidskatalog. Heldigvis er det en enkel feil å fikse.

Metode 1: Finne en Makefile i gjeldende katalog

Det kan være lurt å prøve å kjøre gjøre kommandoen en gang til i den nåværende katalogen for å se om den samme feilen blir kastet mot deg. Dette er spesielt viktig hvis du har åpnet et nytt terminalvindu og allerede har prøvd å finne riktig katalog, eller hvis du har brukt cd-kommandoen siden sist du prøvde å kjøre GNU make.

Forutsatt at det gjør det, prøv å kjøre ls eller dir kommandoen for å se hvilke filer som er i din nåværende katalog. Du er kanskje ikke i høyre del av katalogtreet. Hvis du merker at du ser kataloger som hører hjemme i roten / katalogen eller hjemmekatalogen din, vil du kjøre cd-kommandoen for å plassere deg selv på rett sted for å kjøre make-kommandoen.

Det er en sjanse for at du kan befinne deg enda lenger unna der du forventes å være. I vårt eksempel prøvde vi å kjøre merke fra / var / crash-katalogen og fant at det ikke fungerte i det hele tatt. Det kan ikke forventes å kjøre herfra, da de eneste filene på dette stedet er fra ikke-relaterte krasjrapporter.

Mer enn sannsynlig vil du ønske å kjøre din make-kommando fra en katalog som ligger et sted inne i hjemmekatalogen. Hvis du for eksempel bygde den nyeste versjonen av GNU nano fra kilden, ville du sannsynligvis ha en katalog som ligger på ~ / nano-2.9.6 som du kan cd til og deretter kjøre make igjen. Det kan være lurt å prøve å løpe ls en gang til før du prøver å lage for å sikre at det er en makefile i katalogen du kan bygge fra.

Husk at du må ha konfigurert installasjonen først. Konfigurer-kommandoen skaper det perfekte miljøet for GNU-kompilatoren til å blomstre. Hvis du ikke finner en makefile selv i riktig prosjektkatalog, så kjør ./konfigurer mens du fortsatt er inne i den etterfulgt av gjøre kommando. Hvis dette kompileres riktig, kan du installere prosjektet ditt med sudo lage installasjon, men husk at du ikke vil bygge noe som root, så du vil aldri kjøre sudo make eller noe annet utenfor installasjonen.

Metode 2: Spesifisere en egendefinert Makefile

Forutsatt at det løste problemet, er det ikke noe mer du trenger å gjøre. Det er imidlertid to spesielle bruksområder for å vurdere om den forrige metoden ikke løste problemet ditt. Disse innebærer begge å skrive din egen makefile for et prosjekt du har konfigurert for hånd.

Du kan spesifisere en egendefinert makefile som kalles noe annet enn bokstavelig talt makefile ved å bruke alternativet -f. For eksempel, hvis du hadde en sikkerhetskopi makefile kalt makefile.bak, kan du spesifisere den ved å kjøre lage -f makefile.bak fra kommandolinjen. Du kan erstatte makefile.bak med hvilket som helst filnavn, og du kan inkludere alternativet -i hvis du vil ignorere feil i en tilpasset eller utdatert makefile mens kompilatoren kjører. Dette anbefales vanligvis ikke, siden du sannsynligvis vil redigere makefilen din hvis det er noe galt med den.

Den andre svært nært relaterte brukssaken innebærer en situasjon der saksfølsomhet er et problem. Følgende er alle separate filer på Unix måte å gjøre forretninger på:

  • Makefile
  • makefile
  • makeFile
  • MakeFile
  • MakefilE

Egendefinerte konfigurerte programmer kan ikke gjenkjenne en makefile med merkelig bruk av store bokstaver. Hvis du har håndskrevet det til et kodingsprosjekt du jobber med, vil du sannsynligvis gi nytt navn til det makefile, selv om du kan bruke alternativet -i for å sikre at GNU make er i stand til å finne det. Husk at hvis du har skrevet alt riktig, kan du fremdeles kjøre ./konfigurer fra ditt eget prosjekt for å tvinge det til å generere riktig miljø og unngå dette problemet, til å begynne med.

$config[zx-auto] not found$config[zx-overlay] not found