这个错误是因为内核模块apr.ko的格式不正确,可能是由于采用了错误的CPU架构或编译选项。要解决此问题,需要重新编译apr.ko模块,确保采用正确的CPU架构和编译选项。
例如,对于ARM架构的Android设备,可以按照以下步骤重新编译apr.ko模块:
1.下载apr源码:
$ cd /tmp $ wget https://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.6.5.tar.gz
2.解压缩源码并进入目录:
$ tar -xzf apr-1.6.5.tar.gz $ cd apr-1.6.5
3.设置交叉编译环境,并配置编译选项:
$ export CROSS_COMPILE=arm-linux-androideabi- $ ./configure --host=arm-linux-androideabi --prefix=/usr/local/apr CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon -mthumb" LDFLAGS="-march=armv7-a -Wl,--fix-cortex-a8"
其中,--host指定了目标CPU架构,CFLAGS和LDFLAGS则设置了编译选项,确保编译出的模块能够在目标设备上运行。
4.编译并安装模块:
$ make $ sudo make install
编译完成后,将生成apr.ko模块,可以将其复制到/lib/modules目录下,并尝试重新启动Android设备。
$ sudo cp .libs/apr.ko /lib/modules/ $ sudo depmod $ sudo reboot
重新启动设备后,应该不再出现“Exec format error”错误。