如何在ARM上编译neon

时间:2017-03-31 06:28:00

标签: arm cross-compiling gnu

我用过

arm-linux-gnueabi-g++ test.cpp -march=armv7-a -mfloat-abi=softfp -mfpu=neon -o test

在ubantu上获取ARM上的可执行文件,但是当我运行

adb push ./test /data/test
adb shell
cd data
chmod 777 test
./test

我收到以下错误:

./system/bin/sh: ./test: No such file or directory

我对此感到困惑。

1 个答案:

答案 0 :(得分:0)

如果您打算在Android上运行可执行文件(看起来如此),理想情况下应该使用Android NDK构建它。问题是您的可执行文件链接到glibc,这可以在普通的Linux系统上使用,但不能在Android上使用。 (具体来说,可执行文件无法启动,因为它需要动态链接器/lib/ld-linux.so.3,这在Android上是不可用的。此外,它还需要libc.so.6形式的glibc。)

如果您使用Android NDK构建可执行文件,它将链接到Bionic libc,这是Android上可用的。

或者,如果在链接时添加-static(在您的情况下,在单个编译+链接命令中),您将获得一个静态可执行文件,它应该适用于普通的Linux和Android。