最近做NDK开发相关的项目,总会时不时冒出下面这句打印信息:
error: only position independent executables (PIE) are supported.后面一查,原来是Android版本新添加的保护机制,以前在RK3168 android4.1上没有看到这个东西。
于是在Android源代码下找到:
bionic/linker/linker.cpp
搜索PIE:
找到以下这段:
//注释PIE选项 #if 0 ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(si->base); if (elf_hdr->e_type != ET_DYN) { __libc_format_fd(2, "error: only position independent executables (PIE) are supported.\n"); exit(EXIT_FAILURE); } #endif将其注释再重新编译系统即可。