How to Build Executable with ndk-build VS arm-linux-androideabi-gcc
来源:互联网 发布:淘宝app购买记录怎么查 编辑:程序博客网 时间:2024/05/16 05:42
.
├── jni
│ ├── Android.mk
│ └── main.c
main.c :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
int var1 = 111;
int var2 = 222;
int sum = 0;
sum = var1 + var2;
printf("sum is: %d\n", sum);
return 0;
}
(1) build with ndk-build
Android.mk :
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ndk-sample
LOCAL_SRC_FILES := main.c
LOCAL_CFLAGS += -pie -fPIE
LOCAL_LDFLAGS += -pie -fPIE
include $(BUILD_EXECUTABLE)
红色标识的这两条语句,必须要有,否则,编译生成的二进制可执行文件在Android设备中执行时,会提示
# ndk-sample
error: only position independent executables (PIE) are supported.
这样的错误,加上红色标识的这两句,则不会有这个问题。
编译的二进制可执行文件执行时:
# ./ndk-sample
sum is: 333
(2) build with arm-linux-androideabi-gcc
$ arm-linux-androideabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-androideabi-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-androideabi/4.7.3/lto-wrapper
Target: arm-linux-androideabi
Configured with: ../src/configure --prefix=/usr --libexecdir=/usr/lib --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-linux-androideabi --with-build-sysroot=/build/buildd/gcc-arm-linux-androideabi-0.20130705.1/sys-root --disable-multilib --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --disable-ppl-version-check --disable-cloog-version-check --enable-cloog-backend=isl --disable-libssp --disable-nls --disable-libmudflap --disable-shared --disable-sjlj-exceptions --disable-libquadmath --disable-libitm --disable-libatomic --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --disable-docs --disable-nls --enable-threads --enable-tls --enable-libgomp --disable-libitm --disable-libatomic --disable-libstdc__-v3
Thread model: posix
gcc version 4.7.3 (Linaro GCC 4.7-2014.01)
通过这种方式编译二进制可执行文件时,也需要 -pie -fPIE的标识,否则依旧会提示:
error: only position independent executables (PIE) are supported.
这样的错误,增加这两个标识后,生成二进制可执行文件,在Android设备中执行二进制可执行文件,
收到:
# ./main
WARNING: linker: ./main has text relocations. This is wasting memory and prevents security hardening. Please fix.
sum is: 333
执行结果是正确的,但是text relocations是什么问题呢? 待检查解决???
- How to Build Executable with ndk-build VS arm-linux-androideabi-gcc
- How to Build ffmpeg with NDK r9
- How to Build ffmpeg with NDK r9
- How to Build ffmpeg with NDK r9
- how-to-build-ffmpeg-with-ndk-r9
- How to Build ffmpeg with NDK r9
- How to Build ffmpeg with NDK r9
- How to Build ffmpeg with NDK r9
- How To Build GCC 4.8.2 ARM Cross-Compiler
- How To Build GCC 4.8.2 ARM Cross-Compiler
- arm-linux-androideabi-gcc
- How to build qemu-system-arm in Linux
- arm-linux-androideabi-gcc 选项
- How to Build Linux Kernels
- How to build Android adb for ARM
- How to build Android adb for ARM .
- 关于Cygwin中编译FFmpeg时执行sh文件出现arm-linux-androideabi-gcc is unable to create an executable file.
- How to build samba PDC with Openldap
- 逻辑数据库规范化过程(函数依赖)
- SQLServer 基线跟踪指标
- CodeForces 626C 二分
- 进程(应用程序)之二
- 1002 Strange fuction
- How to Build Executable with ndk-build VS arm-linux-androideabi-gcc
- Fast R-CNN学习笔记
- 数据库优化
- java中字符串在 utf-8 gbk unicode 编码下占内存位数
- js关于setTimeout实现延时执行函数并进行传参
- 练习3-pie
- Oracle 11G Rman备份ASM数据恢复到本地磁盘
- 如何让多份word文档分开显示
- [剑指offer]链表中倒数第k个结点