如何將javacv中的native庫編譯到龍芯平台
由於我們在上一篇中已經講到,java在龍芯平台和國產操作系統“雙劍合璧基礎上的運行問題已經解決了。但是呢,javacv依賴的ffmpeg和opencv等庫都是c/c++庫,這些庫都需要我們自行編譯,所以我們還要知道如何編譯這些c/c++庫。
而好巧不巧的是,我們在上一章中也講了如何編譯龍芯mips架構的c/c++代碼,所以我們直接跳過編譯,直接講如何打包ffmpeg和opencv就好了。
如何將ffmpeg和opencv編譯到龍芯mips平台
由於ffmpeg和opencv都是c/c++庫,而GCC4.6以后版本都可以通過下面這種配置來編譯到龍芯平台
./configure
--arch=mips
--cpu=loongson3a
ffmpeg和opencv都參照這種方式編譯即可。
注意:GCC4.6以后才默認支持龍芯3A架構,所以請GCC版本較低的自行升級到最新版本即可。
按照這種方式,ffmpeg和opencv打包好了,要如何將他們放入javacv里面呢?
我們為了簡化流程,后面只用ffmpeg來講。
集成龍芯版FFmpeg到javacv
目前龍芯已經提供好了版本,只是用的人還太少,沒有編譯進主分支,所以我們需要自己把它放進去即可。
以1.5.4版本的javacv和4.3.1版本的ffmpeg為例:
新建一個java項目,在org.bytedeco.ffmpeg.linux-mips64el路徑下把編譯好的ffmpeg文件(ffmpeg、ffprobe、xxx.so),然后打包成ffmpeg-4.3.1-1.5.4-linux-mips64el.jar包即可。
打包后的jar包為: ffmpeg-4.3.1-1.5.4-linux-mips64el.jar
將這個包作為依賴放入項目中。
opencv和其他庫同樣依照本方法集成。
構建龍芯版的javacpp到javacv
javacpp構建參考:https://github.com/bytedeco/javacpp-presets/wiki/Build-Environments
除此以外,還需要編譯一個基於龍芯平台的javacpp-linux-mips64el。
該步驟需要按照javacpp的教程進行構建,構建完得到的javacpp-linux-mips64el.jar,同樣作為依賴包放入項目中。
javacpp-linux-mips64el只需要構建一次,不需要重復構建。
到這里為止,我們就可以在龍芯平台上運行javacv中有關ffmpeg的功能了。
如果覺得博主寫得還不錯,歡迎”關注、點贊、收藏“一鍵三連。