linux x86软件改arm,编译arm-linux时为何编译的却是x86,修改CMakeLists.txt后可以编译ARM,但是有编译错误...

博主在尝试将项目强制编译为ARM平台时遇到错误,'int8x8_t'类型未被声明。在CmakeLists.txt中加入NEON头文件路径后,问题依然存在。尽管一个简单的测试程序可以成功编译,但项目编译仍然失败。错误源于convolutiondepthwise_3x3_int8.h文件,可能缺少必要的库或者包含文件。
摘要由CSDN通过智能技术生成

@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++自己会知道工具链的库路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值