VS2010程序向Ubuntu系統的移植

      現在的程序是在VS2010上創建的,結合使用了C++和OpenCV2,主要做得是人臉識別和其他一些分析的事情,現在要移植到Linux系統,這兩天移植完成了,現在總結一下。

      用過OpenCV都應該非常熟悉OpenCV在VS的配置使用了,無非就是設置一下include、庫路徑、要使用的庫等,設置完了就可以使用OpenCV了。現在的程序大概分爲兩部分,有一個Facelib庫,這個是intel研究院自己開發的,也用到了OpenCV2,我們使用的是這個庫來進行人臉識別,而沒有使用現在OpenCV2.4版本之後纔有的FaceRecognizer類。所以,得先使用VS2010編譯這個庫產生我們需要的facelib.dll,以便我們程序中使用。但在Linux系統下,dll文件是不可以使用的,我們得重新編譯生成.so文件。在Ubuntu下我們使用Eclipse創建工程,使用Eclipse很省勁,它還能自動生成MakeFile文件。

      首先使用Eclipse創建一個SharedLibrary工程,在工程屬性-->C/C++ Building -->Setting中設置好OpenCV的include路徑、庫路徑和要包含的庫。編譯生成,沒有錯誤的話就會在Debug文件下生成我們需要的libfacelib.so文件。編譯過程中當然出現了各種各樣的錯誤,都通過Google一一解決了。現在記着出了什麼SSE3錯誤,這時在C/C++ Building -->Optimization 下加上 -SSE3 -SSE4.2 。還出現了max使用錯誤等問題,很奇怪把std::max 或 std::min加上括號換成(std::max) 或 (std::min)就好了。

      生成.so文件後,仍然使用Eclipse創建一個C/C++工程,仍然是配置好OpenCV環境,只不過庫路徑和庫要包含上剛纔我們生成的libfacelib.so,而不只是OpenCV的那些.so文件,當然還得包含上FANN.so exif.so fftw3.so 這些我們程序都是需要,它們的編譯很簡單,從它們官網上下載源代碼,然後./configure, make , sudo make install或者sudo cmake就行,如果你使用的默認設置的話生成的.so文件會在/usr/lib 或/usr/local/lib下,找到它們並把他們copy到你自己的庫文件下就行了。

      編譯過程當然錯誤是不可避免的,但多問多查也就一一解決了,總體感覺過程不是很困難,只是有一些很奇怪的錯誤,使用VS2010編寫C/C++程序的時候還是儘量使用標準C++吧,這樣會避免很多不必要的麻煩,還是儘量不要使用window編程,這樣移植的時候有些代碼得重新編寫,比如 _findfirstof()這樣的在Linux下好像沒辦法用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章