2009-02-10 53 views
3

因此,我希望能夠將這個非常簡單的SDL應用程序傳遞給我的朋友,而無需讓他下載一大堆SDL包。編譯C++應用程序,以便它們可以在其他計算機上工作

我該怎麼辦?我被告知要使用此行來編譯: (請注意,我用的Ubuntu Linux操作系統等做我的朋友,而這個應用程序編譯和運行沒有「-Wl,-Bstatic」選項就好了。)

 
    g++ test-sdl.cpp -o test-sdl -Wl,-Bstatic -lSDL_image -lSDL 

但後來我得到這個錯誤:

 
    /usr/bin/ld: cannot find -lgcc_s 
    collect2: ld returned 1 exit status 

爲什麼我收到此錯誤?我如何解決它?我甚至不得不以這種方式做到這一點?有不同的/更容易的/替代的方式嗎?

我是否想要拯救我的朋友下載軟件包,他可能永遠不會使用它的麻煩?

謝謝。

+0

在我看來,SDL沒有資格成爲他可能永遠不會使用的軟件包。除非他從不使用涉及圖形的程序(例如遊戲),否則SDL可能會在稍後發現。 – Brian 2009-02-10 21:06:02

+0

這對於最終用戶來說太假了。 – codelogic 2009-02-10 21:07:16

+0

你錯過了這一點。這是今天的SDL包,明天可能是其他任何東西。我不會部署一個假設任何關於用戶的應用程序。 – ramy 2009-02-10 21:20:46

回答

3

從長遠來看,最好的辦法是找出如何構建.debs,然後你的朋友的系統的包管理可以負責安裝所需的所有依賴關係。如果您想更廣泛地分發軟件包,按照預期使用平臺的本地打包系統可以爲您和您的用戶節省很多麻煩。

看看Ubuntu的指南packagingpbuilder

就我個人而言,我從Martin Krafft Debian book瞭解到如何爲我自己的項目(在Debian上)執行此操作,並且發現使用yada可以大大簡化流程。

2

你應該擺脫-B,我認爲(這改變了搜索路徑,見man g ++,因此你不能再找到你的庫了)。

你的意思是開關-static,沒有響應意見B.

編輯:對不起,那是不完整的。相反,將「-Wl,-Bstatic」全部替換爲「-static」。

由於codelogic寫道,-static不是鏈接器的選項(-WI暗示)。

相關問題