2013-12-14 41 views
3

我正在研究一個將在定製的,基於debian的linux系統上運行的應用程序。我們有一個工具鏈,以便我們可以交叉編譯目標系統的應用程序,這樣我們就不必依賴於我們正在編譯的主機操作系統(而不是目標操作系統)。我應該從源代碼編譯一個庫嗎?

我不知道,但是如果我們要交叉編譯從源代碼或者我們是否應該只使用預罐裝庫和頭文件的第三方庫。例如,libSDL1.2似乎是基於此頁面的發行版不可知的(http://www.libsdl.org/download-1.2.php),所以似乎我們不需要從源代碼編譯它..但其他一些庫對於BSD,Ubuntu,Redhat,等等,這讓我覺得我們需要用我們的工具鏈來編譯它們。

什麼時候應該從源代碼編譯庫?有什麼需要考慮的事情?

+0

什麼是您的主機操作系統?我曾經用於交叉編譯,但在Debian主機/ Debian目標上都是這樣,所以我可以輕鬆利用multiarch軟件包或最糟糕的使用'xapt'在主機上繪製可鏈接的庫。然後,我只是在目標上安裝相同的軟件包,並且所有軟件都能順利運行在交叉編譯Debian目標時,使用Debian主機(無論體系結構)真正讓您的生活更輕鬆,因爲您永遠不需要手動編譯repos中可用的庫(並且Debian回購是* huge *!)。 – syam

+0

另外請注意,許多Debian軟件包(與其他發行版一樣)具有特定於發行版的修補程序,以使軟件可以與整個發行版一起播放。因此,從上游源文件編譯可能不是一個好主意,您可能需要從Debian源代碼進行編譯。而這往往涉及Debian特有的工具。而這又需要Debian主機。如果你在Debian主機上,multiarch/xapt首先會使重新編譯毫無意義。我想你現在明白我的觀點。 ;) – syam

回答

1

它總是編譯/從源代碼構建第三方庫是一件好事。儘管您提到的一些庫如OpenCVlibSDL可以直接使用而無需編譯,但仍然可以通過根據您的首選選項重新構建它們而不是使用其默認選項而獲益。例如,通過重新編譯OpenCV,您可以添加CUDA適合您的PC的功能來加速。

要編譯/構建第三方,您可以使用cmake。對於大多數第三方庫,它們包含一個名爲CMakeLists.txt的文件供您執行此操作。