我正在尝试为我的Oneplus 3T(LogoInjector)构建一个C二进制文件,它使用snapdragon 821,因此它是arm64设备。
当我跑步时:
android-ndk-r13b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc -I android-ndk-r13b/platforms/android-24/arch-arm64/usr/include -c LogoInjector.v1.4.c lodepng
并将已编译的二进制文件复制到手机上的/ system / bin我收到此错误:
sush: /system/bin/LogoInjector: not executable: 64-bit ELF file
我也尝试了32位工具链,但它给了我:
sush: /system/bin/LogoInjector: not executable: 32-bit ELF file
我将二进制文件的权限设置为755,就像/ system / bin
中的所有其他权限一样任何人都可以帮我解决这个问题吗?
谢谢!
答案 0 :(得分:2)
-c
开关指示编译器仅执行编译步骤,跳过链接阶段,生成目标文件而不是可执行文件。调用
aarch64-linux-android-gcc -I android-ndk-r13b/platforms/android-24/arch-arm64/usr/include LogoInjector.v1.4.c -o lodepng
改为命令。除了这些参数之外,您可能还需要指定一些链接器选项(如要链接的库)。
答案 1 :(得分:-1)
在尝试运行应用程序时遇到了此问题。 尝试运行命令:“ file nameapp”。在这里我得到:
ELF可执行文件,32位LSB臂,动态(/ system / bin / linker),未剥离。
但是我的电路板运行命令:“ file system / bin / sh”
用于Android 27的ELF共享对象,64位LSB x86-64动态(/ system / bin / linker64),BuildID = 4a49062467e2958e78ce79839f483302,已剥离。
不同,因此无法运行。 如果要运行它。使用x86-64获取文件。