levmar ndk 編譯

来源:http://www.cnblogs.com/xiaoxiaoqingyi/archive/2017/06/22/7067096.html
-Advertisement-
Play Games

levmar是一個強大的和高效率的C/C++庫,採用Levenberg - 馬奎德(LM)優化演算法, 主要是為瞭解決非線性最小二乘問題。官網是:http://users.ics.forth.gr/~lourakis/levmar/ 在PC引用,網上有挺多的資料可以查詢到,但我想應用到Android上 ...


     levmar是一個強大的和高效率的C/C++庫,採用Levenberg - 馬奎德(LM)優化演算法, 主要是為瞭解決非線性最小二乘問題。官網是:http://users.ics.forth.gr/~lourakis/levmar/   在PC引用,網上有挺多的資料可以查詢到,但我想應用到Android上來,google了一下,找不到太多資料,只有一個國外幾年前的項目:https://github.com/3deggi/levmar-ndk        因為項目太久遠,還是採用 eclipse IDE來開發的,我嘗試搬到 Android Studio 來編譯,還是編譯不成功,最後只有重新配置eclipse 環境。最重要是,還得使用比較舊版本的NDK來編譯,我選用的NDK版本是 12b。過程中有些小錯誤,我就稍微調整了一下,然後按eclipse NDK的步驟編譯了一遍。   項目中 的 application.mk 里有一項配置: APP_ABI := armeab 這個是CPU 的指令集配置。一般我們在編譯的時候,都會相容多種CPU,於是改為: APP_ABI := all   編譯中,沒有什麼大問題,有部分警告而已,編譯成功。 編譯成功後,在libs目錄下出現了 arm64-v8a、armeabi、armeabi-v7a、mips、mips64、x86、x86_64 指令集目錄。於是,我就用真機測試一下,有部分手機通過了,有部分手機運行出錯。   各種調試之後,我發現可能是不同手機的CPU 支持的指令集不一樣,於是我通過以下代碼輸出每台手機的指令集:
 String[] abis = new String[]{};
 abis = Build.SUPPORTED_ABIS; 
  得到結果如下: 魅族 note2:   vivo Y51A   oppo r9s: arm64-v8a, armeabi-v7a, armeabi,   當時vivo Y51A 能運行通過,而其他兩台手機運行時會崩潰。然後我猜可能 是arm64-v8a 庫出錯了。於是我把這個文件以及裡面的文件給刪了, 果然,全部手機都運行通過了。   從這裡大概知道:APP在獲取動態庫時,首先會根據CPU支持的指令集獲取第一個目錄下的動態庫,如果獲取不到,就會到下一個支持的指令集目錄獲取,以此類推。   當然這個項目算是編譯成功了,因為目前多數手機的CPU都會支持 armeabi-v7a 和 armeabi。但我們也知道很多第三方的庫都會相容 arm64-v8a 這種指令集,這個64位的指令集應該會跑得更快。   我也嘗試去重新編譯 levmar 庫,讓它相容 arm64-v8a 指令集。 我下載了其它版本的 NDK來嘗試,因為 ndk-build 命令在 r13 中預設使用 Clang,他們將在後續版本中移除 GCC。levmar 庫其實也使用到了一些 matlab 等其它語言庫,我擔心是這方面編譯出錯了。當我使用了其它版本的NDK編譯後,編譯是成功了,但是在 JNI 調用的時候就會報這樣的錯誤:   06-22 16:32:40.741: A/libc(5024): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 5024 (hvrl.levmar)   查了一下,這個錯誤的原因是,查不到相應 JNI 的實現方法,或者是 native 的代碼執行時出錯了。因為獲取不到C/C++ 的錯誤日誌,我也只能暫時放棄相容 arm64-v8a 指令集。   levmar庫是編譯成功了,是一個 levmar.a 靜態庫, 這裡 levmar 也使用到了 clapack,也編譯成了 .a靜態庫。    我已經編譯好的項目鏈接:https://pan.baidu.com/s/1pLPV4oV 歡迎大家關註我,或一起討論。  
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 瞭解什麼是淺拷貝與深拷貝之前,首先要明白JavaScript中值類型與引用類型的存儲特征。1. 值類型分為兩種:基本數據類型:string、number、boolearn、undefined、null複合數據類型:Array、Object、Function、Date、RegExp…… 2. 賦值`` ...
  • $scope.users = [ {name:'a',id:'1'}, {name:'b',id:'2'}, {name:'c',id:'3'} ]; $scope.selected='2';//id的值,區分類型 $scope.selected=$scope.users[0].id;//如果想要第... ...
  • 最近看到vue-router的HTML5 History 模式路由的實現,然後順便又去研究了一下HTML5 的 History,以下是自己的一些理解,順便用jquery寫 一個實現類似vue-router裡面HTML5 History 模式路由器,以達到練練手,熟悉熟悉的目的。 一、history. ...
  • 這種純CSS3美化單選按鈕radio的方法適用於以下情況: 1、可相容IE9以上,需要相容IE8的要寫IE的hack把樣式去掉 2、只支持單選按鈕radio,因為單選按鈕選中樣式的圓圈可以用CSS做出來,但是覆選按鈕checkbox的選中效果對勾就需要圖片或者圖標字體庫 3、不需要JS支持切換效果 ...
  • 簡介 常用地址 安裝node,查看版本命令: 因為npm伺服器在國外,如果沒有翻牆且npm特別慢的話,可以考慮安裝淘寶鏡像文件,安裝cnpm命令 npm 安裝參數說明: npm 安裝、卸載、更新、幫助、列出已安裝插件命令: npm自動生成配置文件 安裝好Npm後,全局安裝gulp 然後在你項目里,新 ...
  • Dragger2是Android應用開發中一個非常優秀的依賴註入框架。本文主要通過結合Google給出的MVP開發案例todo-mvp-dagger(GitHub連接地址:https://github.com/googlesamples/android-architecture/tree/todo- ...
  • 本文轉自: "在 Mac OS 上編譯 OBS | www.samirchen.com" 安裝環境 第一步,做準備工作,安裝編譯 OBS 所需要的環境,流程如下: 下載和編譯 OBS 從 "https://github.com/jp9000/obs studio" 下載 OBS 代碼: 編譯 OBS ...
  • 關於圖片壓縮:imageview的大小與image的大小不一致,識別的時候,是按照image的大小進行計算,通過重繪,使imageview與image保持一致。 關於坐標Y軸翻轉:屏幕的坐標原點即(0,0)點在左上角,識別圖片的坐標原點在左下角。 運行結果 控制台輸出結果 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...