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

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

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

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

因為之前也很少使用第三方庫,之前也就使用過 boost 庫吧,但是編譯 boost 庫還是挺簡單的,只需要在命令行鍵入幾行命令就可以了。但是這次編譯 OSG 庫還稍微有點麻煩,因為對這個庫不太熟悉,所以我就沒有使用命令行而是使用 cmake 直接圖形化編譯了。

編譯了好幾次,最後算是編譯成功了,這裡總結了點經驗,雖然不一定適合所有庫的編譯,但是最起碼是我經過實踐總結的,應該可以提供一些參考作用。

確定庫的平台

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

確定編譯器平台

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

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

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

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

確定第三方庫的平台

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

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

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

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

確定第三方庫的路徑

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

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

注意庫的安裝路徑

在配置時需要選擇庫的安裝路徑,建議你最好選擇非系統盤,在 Linux 下選擇當前用戶有許可權訪問的文件夾。因為安裝的時候如果沒有安裝路徑的訪問許可權,就會安裝失敗的,請一定注意了!

使用注意事項

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

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


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

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

本文原創發佈於微信公眾號「cdeveloper」,編程、職場,人生,關注並回復關鍵字「linux」、「機器學習」等獲取免費學習資料。

推薦閱讀:

讓 Go 很容易手寫 Parser
[新聞] 大部分Intel hardware intrinsic 將在 .NET Core 2.1 中啟用
自學指南 Flex & Bison
柯里化的前生今世(四):編譯器與解釋器
總結篇5 編譯器——Compiler

TAG:編譯器 | 科技 | 第三方 |