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

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

您好!要在ARM Linux上进行ncnn的交叉编译,您可以按照以下步骤进行操作: 1. 安装交叉编译工具链:首先,您需要安装适用于ARM Linux的交叉编译工具链。这个工具链包含了ARM架构的编译器和库文件,可以在x86主机上生成ARM架构的可执行文件。您可以从ARM官方网站或者其他第三方提供商处获取适用于您的目标平台的交叉编译工具链。 2. 下载ncnn源代码:您可以从ncnn的GitHub仓库中获取源代码。您可以使用git命令进行克隆,或者直接下载压缩包并解压。 3. 配置交叉编译环境:在源代码目录中,打开CMakeLists.txt文件,找到相关的交叉编译选项。根据您的目标平台和交叉编译工具链的路径,设置正确的选项。一般来说,您需要设置CMAKE_SYSTEM_NAME为LinuxCMAKE_SYSTEM_PROCESSOR为armCMAKE_C_COMPILER和CMAKE_CXX_COMPILER为交叉编译工具链中对应的编译器。 4. 创建构建目录:在源代码目录外创建一个新的目录,用于构建过程。例如,您可以在源代码目录同级创建一个名为"build_arm"的目录。 5. 进入构建目录并运行cmake:使用cd命令进入构建目录,然后运行cmake命令来生成Makefile。 ``` cd build_arm cmake .. ``` 6. 执行make命令进行编译:运行make命令开始编译ncnn。 ``` make ``` 7. 编译完成后,您将在构建目录中找到生成的可执行文件和库文件,这些文件是针对ARM Linux平台的。 请注意,以上步骤只是一个大致的指导,具体的步骤可能因您使用的工具链和平台而有所差异。在实际操作中,您可能还需要根据具体情况进行一些调整和配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值