Android(OpenCV) NDK開發: 0xdeadbaad(code=1)錯誤 及 關閉armeabi和libnative_camera_r2.2.2.so的產生

來源:互聯網
上載者:User

        一、OpenCV移植到android之後,開發中遇到錯誤:android fatal signal 11(SIGSEGV) at 0xdeadbaad (code=1).很是糾結,參考https://community.freescale.com/docs/DOC-93378 http://www.linkedin.com/groups/Application-crash-android-40-higher-86481.S.171547732,有的人說是程式中使用AsyncTask的問題,碰巧我程式裡還真使用了。但經過仔細研究發現,如果報錯:android fatal signal 11(SIGSEGV) at 0xdeadbaad (code=1).最先排查的還是本地C/C++代碼的錯誤。 原來是opencv運算時矩陣維數錯誤的原因,導致程式奔潰。

       二、原先Application.mk檔案裡APP_ABI=armeabi armeabi-v7a,所以產生的libs檔案夾裡總有兩套這種東西。經查,armeabi是指的該so庫用於Arm的通用CPU,而v7a的CPU支援硬體浮點運算。因此armeabi通用性強,但速度慢,而v7a能充分發揮v7a CPU的能力。華為U9200cpu型號是OMAP4660,是A9的。查了半天也沒看出來究竟支不支援硬體浮點運算。將armeabi去掉之後,原來的程式大小4.23M直接縮小至2.62M。運行良好,看來瘦身很關鍵啊。

      三、原先在ndk-build編譯本地庫時,總是看到有libnative_camera_r2.2.2.so和一個r2.3.3.so產生,如下。奇怪的是,我在本地代碼雷根本沒有使用camera模組。

借鑒這裡http://stackoverflow.com/questions/9460424/opencv-on-android-duplicate-file-for-apk,在Application.mk檔案裡添加

OPENCV_CAMERA_MODULES:=off 

果然,再次編譯安裝的時候兩個camera的庫不安裝了!注意這句話寫在Android.mk裡無效。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.