天天看點

linux 編譯第三方庫,分享點編譯第三方庫的經驗

linux 編譯第三方庫,分享點編譯第三方庫的經驗

版權聲明:本文為 「cdeveloper」 原創文章,可以随意轉載,但必須在明确位置注明出處!

在畢設項目中需要使用一個開源 3D 渲染引擎 OSG 庫,既然是第三方庫那麼基本上是需要自己編譯的,倒不是說必須的,而是最好是自己編譯,為什麼呢?

因為官方編譯的版本不一定适合你的機器,在你的機器上運作用你自己機器編譯的版本是最好的了,是以在使用第三方庫時最好自己編譯一份,以免在開發調試過程中出現一些莫名其妙的錯誤,那樣會嚴重影響效率和自己的心情。

因為之前也很少使用第三方庫,之前也就使用過 boost 庫吧,但是編譯 boost 庫還是挺簡單的,隻需要在指令行鍵入幾行指令就可以了。但是這次編譯 OSG 庫還稍微有點麻煩,因為對這個庫不太熟悉,是以我就沒有使用指令行而是使用 cmake 直接圖形化編譯了。編譯了好幾次,最後算是編譯成功了,這裡總結了點經驗,雖然不一定适合所有庫的編譯,但是最起碼是我經過實踐總結的,應該可以提供一些參考作用。

确定庫的平台

這個非常重要,直接決定了你能不能使用編譯出來的庫。你要提前搞清楚你的項目位數,确定是編譯 32 位版本還是 64 位版本。我的建議是盡量編譯 32 位版本的庫,因為相容性要好一點,麻煩會少很多,但是實際情況還需要你自己取舍,這隻是我的建議,千萬不要一概而論了。

确定編譯器平台

在 win 下主要使用 VC++ 編譯器,而 VC++ 編譯器也分為 32 位和 64 位,在選擇的時候一定要跟庫的版本對應,即:

編譯 32 位版本用 32 位編譯器

編譯 64 位版本用 64 位編譯器

在 Linux 下用 gcc 也是一樣的道理,很多時候最後的編譯出錯都是因為沒有注意到這些細節,是以配置時一定要注意了,畢竟編譯一次很耗時間的,争取一次通過。

确定第三方庫的平台

有些庫的編譯依賴第三方庫,例如 OSG,在 cmake 配置的時候需要指定這個第三方庫,并且仍然要注意使用對應平台的第三方庫,即:

編譯 32 位庫使用 32 位第三方庫

編譯 64 位庫使用 64 位第三方庫

總之,平台對應是很重要的,直接影響到你能不能編譯成功和使用。

确定第三方庫的路徑

這個非常容易出錯,在配置第三方庫的路徑時一定要選到含有 include,bin,lib 這些檔案夾的路徑下,否則也很容易報錯找不到第三方庫,進而導緻編譯失敗。

例如這是 OSG 第三方庫的正确路徑:

linux 編譯第三方庫,分享點編譯第三方庫的經驗

osg

注意庫的安裝路徑

在配置時需要選擇庫的安裝路徑,建議你最好選擇非系統盤,在 Linux 下選擇目前使用者有權限通路的檔案夾。因為安裝的時候如果沒有安裝路徑的通路權限,就會安裝失敗的,請一定注意了!

使用注意事項

在使用編譯出來的庫時要注意,用什麼編譯器來編譯庫,就用什麼編譯器來編譯你的項目。例如我使用 VS2015_x86 來編譯 OSG,那麼我在 Qt 中使用的時候也要使用 MSVC2015_x86 編譯套件的 Qt,否則也是使用不了的,即編譯庫和使用庫的編譯器要相同。

就這幾點經驗吧,有需要具體編譯 OSG 庫的過程的可以看看我之前的這篇文章。

PS1:5.1 祝大家節日快樂,我 5.1 還更新技術分享,是不是考慮給點個贊啊。

PS2:有在南昌的朋友一定要去坐下南昌之星摩天輪,門票 50,據說晚上的效果特别的美,但是我是上午去的......