@nihui 非常感谢您的回复
我修改src/CmakeLists.txt的第43行,强制进入ARM平台编译
#if((IOS AND ${CMAKE_OSX_ARCHITECTURES} MATCHES "arm")
if(TRUE
OR (CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|aarch64)"))
这样可以进入ARM平台编译,但是编译时会报错,我看了下代码意思是convolutiondepthwise_3x3_int8.h文件中
未找到int8x8_t类型的定义
内容如下(列出一个错误,其它都同一个错误):
/home/ncnn-master_20181128_cross/src/layer/arm/convolutiondepthwise_3x3_int8.h:679:9: 错误:‘int8x8_t’在此作用域中尚未声明
int8x8_t _k0 = vdup_n_s8(kernel[0]);
^
/home/ncnn-master_20181128_cross/src/layer/arm/convolutiondepthwise_3x3_int8.h:680:18: 错误:expected ‘;’ before ‘_k1’
int8x8_t _k1 = vdup_n_s8(kernel[1]);
我尝试修改src/CmakeLists.txt,在其中添加neon_arm.h文件的路径,这个路径就是我的工具链的头文件路径
重新cmake;make后仍然提示那个错误
include_directories(/opt/FriendlyARM/toolchain/4.9.3/lib/gcc/arm-cortexa9-linux-gnueabihf/4.9.3/include)
我自己写了一个简单的demo来验证neon是否可以编译
//t1.cpp
#include
#include
#include
int main(int argc, char argv[])
{
char _kernel[10] = {1,2,3};
const signed char kernel = (const signed char*)_kernel;
int8x8_t a = vdup_n_s8(kernel[0]);
printf("exit: %d\n",a);
return 0;
}
编译命令:arm-cortexa9-linux-gnueabihf-g++ t1.cpp -mfpu=neon
正常能够通过编译,而且也没有指定include的路径,说明arm-cortexa9-linux-gnueabihf-g++自己会知道工具链的库路径