1. 程式人生 > >出現錯誤/ncnn/src/cpu.cpp:426: undefined reference to `stderr'完美解決方案。

出現錯誤/ncnn/src/cpu.cpp:426: undefined reference to `stderr'完美解決方案。

前提情況

1。 android studio 編譯器
2。 利用ncnn前向推理框架進行移植caffemodel到android手機端
3。 使用cmake進行編譯,NDK java的c++介面

出現問題

/ncnn/src/cpu.cpp:426: undefined reference to `stderr'(主要問題根源)

具體問題如下(為了大家能夠看得清楚,這裡我把背景調成白的了,平時都是黑的)
在這裡插入圖片描述

分析問題

首先出現問題的過程是因為我這邊用的ncnn最後make build的平臺是armeabi-v7a,為大多數android手機的硬體cpu結構,但是此處專案需要需要用到RK3399硬體,查之後得知cpu架構為arm64-v8a,所以需要更改一些檔案(ncnn make-build時的libncnn.a檔案和include資料夾,具體可參考ncnn使用),還需要更改一些路徑CMakeList中的路徑以及build-gradle檔案中的平臺名稱如下圖:
在這裡插入圖片描述


在這裡插入圖片描述
在這裡插入圖片描述

這樣應該如願以償進行編譯專案工程的時候就會Cmake成功得到libMobileNetssd.so檔案
並且此檔案在如下圖位置,當然畫紅框的資料夾名稱應該為此時的cpu框架arm64-v8a
在這裡插入圖片描述

好了!
現在已經分析好了,從前到尾整個過程,但是最後編譯會出現以前error
可能的問題出在分析如下

  1. 路徑沒有改,檔案沒有改(這裡我從前到尾好好走了一遍是都改好的,並且路徑正確)
  2. 缺少某些低版本的檔案,但是最後提示error沒有顯示,說明不缺檔案
  3. SDK的版本問題
    為啥會有最後一種思考呢?因為cmake的用法我已經很熟悉,深度學習框架caffe和前向推理ncnn的用法都不存在問題,所以唯一的問題就應該存在於sdk某些版本支援問題(android這方面很常見)

解決

思考

我的想法是 因為這個cpu架構出的可能比較晚,或者說androd sdk高版本才支援所以,需要把最小的androidsdk版本調高即可

相關推薦

出現錯誤/ncnn/src/cpu.cpp:426: undefined reference to `stderr'完美解決方案

前提情況 1。 android studio 編譯器 2。 利用ncnn前向推理框架進行移植caffemodel到android手機端 3。 使用cmake進行編譯,NDK java的c++介面 出現問題 /ncnn/src/cpu.cpp:426: undef

undefined reference to `__gnu_mcount_nc'的解決 在編譯核心時出現瞭如下錯誤

在編譯核心時出現瞭如下錯誤: init/built-in.o: In function `do_one_initcall': calibrate.c:(.text+0x14): undefined reference to `__gnu_mcount_nc' init/built-in.o: In

Caffe-SSD錯誤:.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail_106501::cpp_reg

編譯Caffe-SSD時遇到以下錯誤: .build_release/lib/libcaffe.so: undefined reference to `boost::re_detail_106501::cpp_regex_traits_implementation<char&g

linux 連結庫檔案出現undefined reference to" 問題的解決方法

最近在Linux下程式設計發現一個詭異的現象,就是在連結一個靜態庫的時候總是報錯,類似下面這樣的錯誤: (.text+0x13): undefined reference to `func'      關於undefined reference這樣的問題,大家其實經常會遇

Qt中出現qt : undefined reference to `vtable forXXX解決辦法

我們在Qt中要使用訊號和槽的時候必須要新增Q_OBJECT巨集,否則會報錯。但是有時候我們添加了Q_OBJECT的時候,我們會發現同樣會報錯,報錯如下所示: undefined reference to 'vtable for ***(類) 面對這個報錯

Linux編譯程式報錯 undefined reference to error 的解決方法

對於我這個剛入IT行業不就得新手來說,在linux下連結庫的時候總是會遇到各種各樣奇葩的問題,最多的就是“undefined reference to”和“cannot find”這兩類,層出不窮,總是在我即將完成工作的時候給我當頭一棒,讓我欲罷不能。這不,這幾天編譯linux下一個專案時又遇到難題

gcc "undefined reference to" 問題解決方法(使用庫)

最近在Linux下程式設計發現一個詭異的現象,就是在連結一個靜態庫的時候總是報錯,類似下面這樣的錯誤: (.text+0x13): undefined reference to `func' 

undefined reference to `av_register_all' 問題解決

之前一直在eclipse上使用ndk前一陣轉到Android studio上 使用ndk 被這個undefined reference to `av_register_all'  問題困擾了很久,一度認為是路徑沒有配置好後來發現解決方法#include <libavco

關於undefined reference to `inflate'問題解決方法

今天編譯一個程式出現上面的錯誤,在編譯環境中已經加入了連結對應的壓縮庫,後來發現只有在主程式中呼叫一次同壓縮相關的函式即可,但是我實際上在主檔案中並不需要,解決方法為寫一個不被呼叫的函式,裡面內容為: void do_nothing() { ZipArchive zip; m

C 語言 undefined reference to 'sqrt' 問題解決

題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少? 1.程式分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後 的結果滿足如下條件,即是結果。請看具體分析: 2.程式原始碼

undefined reference to `log' 問題解決

嘗試gcc 編譯出現問題。如:gcc -o lz77 main.o lz77.o tree.o bitio.obitio.o: In function `bitof':bitio.c:(.text+0xd): undefined reference to `log'bitio

ubuntu 下沒有pthread庫以及報undefined reference to 'pthread_create'的解決方法

最近在Ubuntu下編譯一個程式,需要使用多執行緒庫pthread,但是編譯時總是提示“undefined reference to 'pthread_create'”的錯誤,如下圖所示: 要解決這

undefined reference to 'function'及解決辦法

在開發演算法過程中,自己寫的函式編譯生成一個動態共享連結庫檔案.so. 然後由其他模組呼叫其中的函式時出現undefined reference to : function(要呼叫的函式)錯誤提示. 反覆檢查函式已經正確編寫,呼叫命令也沒問題. 使用nm命令檢查發現也沒問題,

關於Cmake 連結靜態庫出現undefined reference to錯誤

在編寫一個C++專案的時候,使用cmake管理工程,成功連結一個靜態庫,但是在編譯時仍然出現undefined reference to 的錯誤。 最終發現問題是由於c和c++混編導致的。 解決方案: 由於我連結的庫是使用c語言編寫,所以需要在include標頭檔案時加上 #

Linux Ubuntu執行執行緒程式出現undefined reference to ‘pthread_create’和undefined reference to ‘pthread_join’錯誤

Linux Ubuntu執行執行緒程式出現undefined reference to ‘pthread_create’和undefined reference to ‘pthread_join’錯誤。 編寫好執行緒程式碼,進行編譯 gcc xiancheng.c -o xiancheng 出

PHP 編譯安裝時出現 undefined reference to `libiconv' 錯誤解決方法

原文:http://flyfishes.blog.51cto.com/3527694/819693 手動編譯PHP安裝時遇到如下錯誤 /usr/local/src/php-5.3.10/ext/xmlrpc/libxmlrpc/encodings.c:73: und

GCC編譯uboot出現(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'錯誤解決辦法

/opt/arm-2010.09/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/armv4t/libgcc.a(_bswapsi2.o):(.ARM.exid

linux下開發,解決cocos2d-x中編譯出現的一個小問題, undefined reference to symbol &#39;pthread_create@@GLIBC_2.2.5&#39;

water span x86 code bject data- ace 技術分享 inux 解決cocos2d-x中編譯出現的一個小問題 對於cocos2d-x 2.×中編譯中,若頭文件裏引入了#include "cocos-ext.h",在進行C++編譯的時候會遇到例

[ c++] cmake 編譯時 undefined reference to `std::cout' 錯誤解決方案

bin cut () cmake fin epo linking com urn cmake .. 和 make 之後,出現如下錯誤 Linking CXX executable ../../../bin/ModuleTest CMakeFiles/Modu

啟動Apache出現錯誤Port 80 in use by "Unable to open process" with PID 4!

pre 找到 with pen nbsp art configure style post 22:15:30 [Apache] Problem detected! 22:15:30 [Apache] Port 80 in use by "Unable to open