2016-06-10 17 views
-1

Ich habe eine App auf meinem Windows-Rechner erstellt und möchte sie nun auf meinem Linux-Rechner installieren. Es hat mehrere Header und Quelldateien, daher dachte ich, dass es am besten ist, sie auf Github hochzuladen. Ich habe das gemacht und ich habe auch ein Makefile erstellt, aber ich bekomme eine Menge Fehler, wenn ich versuche, es direkt aus dem Ordner zu installieren.Wie installiere ich eine eigene App auf Ubuntu

Angesichts der Tatsache, dass es nur für den persönlichen Gebrauch ist, gibt es eine Möglichkeit, jede Datei manuell zu kompilieren und dann als Ganzes auszuführen?

Makefile:

.PHONY: all debug profile install uninstall clean 

all: $(PROG) 

$(PROG): $(FILES) 
    $(CC) $(CCFLAGS) -o $(PROG) $(FILES) $(LIBS) 

debug: $(FILES) 
    $(CC) $(DEBUGFLAGS) -o $(PROG) $(FILES) $(LIBS) 

profile: $(FILES) 
    $(CC) $(CCFLAGS) -pg -o $(PROG) $(FILES) $(LIBS) 

install: $(PROG) 
    cp -f $(PROG) /usr/sbin/ 
    cp -f $(PROG).1 /usr/man/man1/ || cp -f $(PROG).1 /usr/local/man/man1/ 

uninstall: 
    rm -f /usr/sbin/$(PROG) 
    rm -f /usr/man/man1/$(PROG).1 || rm -f /usr/local/man/man1/$(PROG).1 

clean: 
    rm -f $(PROG) 
+1

GitHub hat nichts mit der Installation zu tun, es ist nur ein Ort, um den Code zu speichern. Könntest du einen [mcve] Code und Makefile geben und auf "viele Fehler" * erweitern? – jonrsharpe

+0

Das Problem mit dem Makefile liegt hier: 'cp -f $ (PROG)/usr/sbin/cp -f $ (PROG) .1/usr/man/man1/|| cp -f $ (PROG) .1/usr/local/man/man1/'während der Fehler" keine solche Datei oder Verzeichnis "ist. Ich habe versucht, es selbst zu lösen, aber ich habe versagt. Außerdem habe ich kein verifizierbares Beispiel für den Code angegeben, weil ich nach einer Alternative und nicht nach einer Codeüberprüfung gefragt habe. Wenn der Code jedoch obligatorisch ist, werde ich ihn hinzufügen. – EdTed

+0

@jonrsharpe Ich habe einen Teil des Makefiles hinzugefügt. Ich hoffe, das hilft. – EdTed

Antwort

0

Während Ihr grundlegender Ansatz in Ordnung ist, werden Sie ein paar Details fehlen, und Sie sind ein paar Konventionen zu brechen, die aus einem bestimmten Grunde errichtet wurden.

Details:

  • Ihre Definitionen für $(PROG), $(FILES) und $(LIBS) sind nicht enthalten.
  • Sie versuchen, eine Datei in ein Verzeichnis zu kopieren, ohne ihre Existenz sicherzustellen. Das install Dienstprogramm wird oft anstelle von cp verwendet, um solche Sachen zu behandeln.

Konventionen: bei Bedarf

  • Sie erscheinen nicht nur root Privilegien zu verwenden. Kompiliere als normaler Benutzer; nur Lauf make install als root, z.B. unter Verwendung von sudo; oder besser, vermeiden Sie das auch.
  • Sie versuchen, Dateien in /usr/bin/ und /usr/man zu platzieren, wo das Paketverwaltungssystem Dateien installiert, sodass Sie Gefahr laufen, es zu verwirren. Nicht. Wenn Sie keine Software von Drittanbietern, z. B. Ihre eigene, für alle Benutzer auf dem System verfügbar machen müssen, installieren Sie einfach unter /usr/local/ oder /opt, die für diesen Zweck vorhanden sind. Passen Sie $PATH und $MANPATH entsprechend an. Wenn es nur für Ihren eigenen persönlichen Gebrauch ist, können Sie in Verzeichnisse unter $HOME installieren.
  • Erstellen Sie das oberste Zielverzeichnis für die Installation in einer Variablen in Ihrem Makefile. Es wird oft $(DESTDIR) genannt.
Verwandte Themen