2016-06-10 86 views
-1

我在Windows機器上創建了一個應用程序,現在我想將它安裝在我的Linux機器上。它有幾個頭文件和源文件,所以我認爲最好在Github上上傳它。我這樣做了,我也創建了一個Makefile,但是當我嘗試直接從文件夾安裝它時,出現了很多錯誤。如何在Ubuntu上安裝自己的應用程序

鑑於它僅供個人使用,是否有辦法手動編譯每個文件然後將其作爲一個整體運行?

的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與安裝無關,它只是一個存放代碼的地方。你能否給出[mcve]的代碼和makefile,並且擴展*「很多錯誤」*? – jonrsharpe

+0

makefile的問題在於:'cp -f $(PROG)/ usr/sbin/cp -f $(PROG).1/usr/man/man1/|| cp -f $(PROG).1/usr/local/man/man1 /',而錯誤是「沒有這樣的文件或目錄」。我試圖自己解決,但我失敗了。另外,我沒有提供可驗證的代碼示例,因爲我要求替代代碼而不是代碼檢查。但是,如果代碼是強制性的,我會添加它。 – EdTed

+0

@jonrsharpe我添加了makefile的一部分。希望有所幫助。 – EdTed

回答

0

當你的基本做法是好的,你錯過了幾個細節,而你正在打破建立其原因爲一些約定。

詳情:

  • 你定義爲$(PROG)$(FILES)$(LIBS)不包括在內。
  • 您嘗試將文件複製到目錄而不確保其存在。經常使用install實用程序來代替cp來處理像這樣的東西。

約定:

  • 您不會出現只在必要時才使用root特權。作爲普通用戶編譯;僅運行make install作爲root,例如,使用sudo;或更好,甚至可以避免。
  • 您正試圖將文件放入/usr/bin//usr/man,其中包管理系統會安裝文件,因此您可能會將其混淆。別。如果您不需要爲系統上的所有用戶製作第三方軟件(例如您自己的軟件),只需安裝到/usr/local//opt即可用於此目的。相應地調整$PATH$MANPATH。如果僅供您個人使用,則可以安裝到$HOME下的目錄。
  • 將頂級目標目錄安裝到Makefile中的變量中。它通常被稱爲$(DESTDIR)