ncnn网址:https://github.com/Tencent/ncnn

1、

sudo apt-get update

sudo apt-get upgrade

2、

命令:sudo apt-get install g++-4.8-arm-linux-gnueabihf

sudo apt-get install gcc-4.8-arm-linux-gnueabihf

测试:

$arm-linux-gnueabihf-g++-4.8 --version

arm-linux-gnueabihf-g++-4.8 (Ubuntu/Linaro 4.8.5-4ubuntu1) 4.8.5

Copyright (C) 2015 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

sudo ln -s /usr/bin/arm-linux-gnueabihf-g++-4.8 /usr/bin/arm-linux-gnueabihf-g++

sudo ln -s /usr/bin/arm-linux-gnueabihf-gcc-4.8 /usr/bin/arm-linux-gnueabihf-gcc

arm linux 64位交叉编译器

网址:https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/

下载:gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz

vi ~/.bashrc

export PATH=/home/Your Name/armlinux/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin:$PATH

source ~/.bashrc

测试:

aarch64-linux-gnu-g++ --version

输出:

aarch64-linux-gnu-g++ (Linaro GCC 6.3-2017.05) 6.3.1 20170404

Copyright (C) 2016 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

3、在ncnn目录下的CMakeLists.txt,在cmake_minimum_required(VERSION 2.8.10)下面添加

set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)

set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)

add_definitions(-D__ARM_NEON)

add_definitions("-mfpu=neon")

4、 src文件夹下,修改该文件夹下的CMakeLists.txt文件。删除如下图所示代码:

CMakeLists.txt为

##############################################

configure_file(platform.h.in ${CMAKE_CURRENT_BINARY_DIR}/platform.h)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

include_directories(${CMAKE_CURRENT_BINARY_DIR})

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/layer)set(ncnn_SRCS

allocator.cpp

blob.cpp

cpu.cpp

layer.cpp

mat.cpp

mat_pixel.cpp

modelbin.cpp

net.cpp

opencv.cpp

paramdict.cpp

benchmark.cpp

)

macro(ncnn_add_layerclass)string(TOLOWER ${class} name)

# WITH_LAYER_xxx optionif(${ARGC} EQUAL 2)

option(WITH_LAYER_${name}"build with layer ${name}"${ARGV1})else()

option(WITH_LAYER_${name}"build with layer ${name}"ON)

endif()

message("WITH_LAYER_${name} = ${WITH_LAYER_${name}}")if(WITH_LAYER_${name})

list(APPEND ncnn_SRCS"${CMAKE_CURRENT_SOURCE_DIR}/layer/${name}.cpp")

# lookforarch specific implementation and append source

# optimized implementationforarmv7 aarch64if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/layer/arm/${name}_arm.cpp")

list(APPEND ncnn_SRCS"${CMAKE_CURRENT_SOURCE_DIR}/layer/arm/${name}_arm.cpp")set(WITH_LAYER_${name}_arm 1)

endif()

endif()

# generate layer_declaration and layer_registry fileif(WITH_LAYER_${name})if(WITH_LAYER_${name}_arm)

file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/layer_declaration.h"extern Layer* ${class}_arm_layer_creator();")

file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/layer_registry.h"#if NCNN_STRING

{"${class}",${class}_arm_layer_creator},

#else

{${class}_arm_layer_creator},

#endif")

elseif(WITH_LAYER_${name}_x86)

file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/layer_declaration.h"extern Layer* ${class}_x86_layer_creator();")

file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/layer_registry.h"#if NCNN_STRING

{"${class}",${class}_x86_layer_creator},

#else

{${class}_x86_layer_creator},

#endif")else()

file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/layer_declaration.h"extern Layer* ${class}_layer_creator();")

file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/layer_registry.h"#if NCNN_STRING

{"${class}",${class}_layer_creator},

#else

{${class}_layer_creator},

#endif")

endif()else()

file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/layer_registry.h "#if NCNN_STRING

{"${class}",0},

#else

{0},

#endif")

endif()

# generate layer_type_enum file

file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/layer_type_enum.h "${class} = ${__LAYER_TYPE_ENUM_INDEX},")

math(EXPR __LAYER_TYPE_ENUM_INDEX"${__LAYER_TYPE_ENUM_INDEX}+1")

endmacro()

# createnewfile(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/layer_declaration.h)

file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/layer_registry.h)

file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/layer_type_enum.h)set(__LAYER_TYPE_ENUM_INDEX 0)

# layer implementation

ncnn_add_layer(AbsVal)

ncnn_add_layer(ArgMax OFF)

ncnn_add_layer(BatchNorm)

ncnn_add_layer(Bias)

ncnn_add_layer(BNLL)

ncnn_add_layer(Concat)

ncnn_add_layer(Convolution)

ncnn_add_layer(Crop)

ncnn_add_layer(Deconvolution)

ncnn_add_layer(Dropout)

ncnn_add_layer(Eltwise)

ncnn_add_layer(ELU)

ncnn_add_layer(Embed)

ncnn_add_layer(Exp)

ncnn_add_layer(Flatten)

ncnn_add_layer(InnerProduct)

ncnn_add_layer(Input)

ncnn_add_layer(Log)

ncnn_add_layer(LRN)

ncnn_add_layer(MemoryData)

ncnn_add_layer(MVN)

ncnn_add_layer(Pooling)

ncnn_add_layer(Power)

ncnn_add_layer(PReLU)

ncnn_add_layer(Proposal)

ncnn_add_layer(Reduction)

ncnn_add_layer(ReLU)

ncnn_add_layer(Reshape)

ncnn_add_layer(ROIPooling)

ncnn_add_layer(Scale)

ncnn_add_layer(Sigmoid)

ncnn_add_layer(Slice)

ncnn_add_layer(Softmax)

ncnn_add_layer(Split)

ncnn_add_layer(SPP OFF)

ncnn_add_layer(TanH)

ncnn_add_layer(Threshold)

ncnn_add_layer(Tile OFF)

ncnn_add_layer(RNN OFF)

ncnn_add_layer(LSTM OFF)

ncnn_add_layer(BinaryOp)

ncnn_add_layer(UnaryOp)

ncnn_add_layer(ConvolutionDepthWise)

ncnn_add_layer(Padding)

ncnn_add_layer(Squeeze)

ncnn_add_layer(ExpandDims)

ncnn_add_layer(Normalize)

ncnn_add_layer(Permute)

ncnn_add_layer(PriorBox)

ncnn_add_layer(DetectionOutput)

ncnn_add_layer(Interp)

ncnn_add_layer(DeconvolutionDepthWise)

ncnn_add_layer(ShuffleChannel)

ncnn_add_layer(InstanceNorm)

ncnn_add_layer(Clip)

ncnn_add_layer(Reorg)

ncnn_add_layer(YoloDetectionOutput)

ncnn_add_layer(Quantize)

ncnn_add_layer(Dequantize)

ncnn_add_layer(Yolov3DetectionOutput)

add_library(ncnn STATIC ${ncnn_SRCS})if(COVERAGE)

target_compile_options(ncnn PRIVATE--coverage)

endif()

install(TARGETS ncnn ARCHIVE DESTINATION lib)

install(FILES

allocator.h

blob.h

cpu.h

layer.h

layer_type.h

mat.h

modelbin.h

net.h

opencv.h

paramdict.h

benchmark.h

${CMAKE_CURRENT_BINARY_DIR}/layer_type_enum.h

${CMAKE_CURRENT_BINARY_DIR}/platform.h

DESTINATION include

)

编译

git clone https://github.com/Tencent/ncnn

cd ncnn

mkdir build

cd build

cmake ..

make-j

make install

检查:

readelf libncnn.a –a

最后出现

Tag_Advanced_SIMD_arch: NEONv1  编译正确

ncnn arm linux,arm ncnn相关推荐

  1. easypr arm linux,arm linux下交叉編譯EasyPR中文車牌識別系統開發(一)

    EasyPR中文車牌識別系統開發(一),我主要介紹如何使用開源的EasyPR中文車牌識別系統,當然后面我會介紹訓練機器學習 SVM 支持向量機和 ANN 人工神經網絡模型在車牌識別的應用. 目錄: 一 ...

  2. arm linux 启动之一:汇编启动到start_kernel

    描述arm linux启动的概要过程,以S5PV210(Cortex A8)为例,本文描述第一个阶段. 一.arm linux的引导 uboot在引导arm linux(uImage镜像)到SDRAM ...

  3. ARM Linux 3.x的设备树(Device Tree)【转】

    转自:http://blog.csdn.net/21cnbao/article/details/8457546 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ARM Devi ...

  4. arm linux嵌入式网络控制系统,基于ARMLinux的嵌入式网络控制系统的研究与设计

    摘要: 随着计算机技术.控制技术和网络技术的蓬勃发展,嵌入式系统与网络控制系统的应用越来越广阔.当前控制系统正经历一场前所未有的变革,远程监控和智能控制成为控制系统发展的重要方向.通过嵌入式网络控制系 ...

  5. python linux arm_[Python]python for ARM/LINUX

    按照下面的方法,可以成功将python2.5 build到 ARM /linux , 我已经成功了: Download latest from www.python.org Save into /ho ...

  6. 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容...

    [Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...

  7. ARM linux的启动部分源代码简略分析

    ARM linux的启动部分源代码简略分析 以友善之臂的mini2440开发板为平台,以较新的内核linux-2.6.32.7版本为例,仅作说明之用. 当内核映像被加载到RAM之后,Bootloade ...

  8. ARM+linux+2440嵌入式开发相关经典书籍(转)

    源:ARM+linux+2440嵌入式开发相关经典书籍 转载于:https://www.cnblogs.com/LittleTiger/p/7992971.html

  9. linux pfn,ARM Linux下的page和pfn之间转换的宏。

    ARM Linux下的page和pfn之间转换的宏如下: 1)page_to_pfn 2)pfn_to_page 这两个宏依赖于内核编译时,选择的内存模型.在include/asm-generic/m ...

最新文章

  1. 开源的关于智能车竞赛光电起始点方案
  2. 人生第一个快速幂的题(HDU - 1097--A hard puzzle )
  3. YOLOv5-Lite 使用笔记
  4. python爬虫实例-python3.7简单的爬虫实例详解
  5. Spring官网阅读(一)容器及实例化
  6. linux中使用svn客户端
  7. centerandzoom 无效_在bootstrap modal 中加载百度地图的信息窗口失效解决方法
  8. eclipse开发javaweb项目配置tomcat
  9. c语言 define 关键字,c语言中define的一个不常见的用法
  10. linux每隔多久调度y,Linux 进程调度+Linux系统一般执行过程 笔记
  11. python-往对象中添加属性值
  12. IE 7 Standard 模式问题总结
  13. python基础4-序列
  14. c语言二叉树的序列化,不怕面试被问了!二叉树算法大盘点
  15. 移动硬盘打不开提示格式化如何恢复数据
  16. MacBook Air 2013全新安装Win7
  17. mysql rand_MySQL中的RAND()函数使用详解
  18. 12306 验证码识别源码
  19. PowerBi - 建模与关系函数
  20. gitlab服务器代码存储位置,gitlab仓库存储位置的修改方法

热门文章

  1. AJAX 网页保留浏览器前进后退等功能
  2. 一、开始动手开发网球平台
  3. android+php最佳实践视频,Android和PHP开发最佳实践 PDF 第2版
  4. 算法与程序设计_算法与程序设计入门-简单计算题1
  5. 京东java笔试_2017阿里,百度,京东java面试+笔试大合集,2018的你会吗?
  6. 设计师交流平台!!!
  7. 一组飒气十足的商务海报PSD分层海报
  8. 看看如何有效地在你的设计工作中使用霓虹色?
  9. 玩转未来科技感!高端电商海报设计素材
  10. PSD分层模板素材|电商页面这样设计,转化率成倍提高!