android ndk编译命令

android ndk提供了一套自己的makefile管理方式,要将源码项目移植到android平台,需要按照android的makefile规则编写makefile,还要按android的规则部署源码目录,对一个有自己的makefile管理方法的大型项目来说,只是做一下makefile迁移工作就是一件很麻烦的事。
其实android ndk上的编译说到底也就是交叉编译,只要配置好交叉编译工具链,使用原有的makefile也是可以编译出在android运行的c、c++程序的。
以android-ndk-r4-crystax的ndk版本为例:
编译器路径 android-ndk-r4-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin
名称前缀 arm-eabi-
头文件目录 android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/include
库文件目录 android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/lib
你可以试一下上面的配置,如果编译链接都没有问题,可以adb push到android设备上运行看看,什么结果?
有点崩溃,根本运行不起来,你也许想试试看android自带的ndk例子,确实是能够运行的,问题在哪儿呢?
只是正确配置了编译器、头文件、库文件还不够,还需要配置编译、链接的参数,android例子中编译链接的参数是什么呢?你也许想深究一下android的makefile,可是不久你会发现那是更崩溃的事情,里面用了很多的make脚本函数。其实android的makefile是可以把执行的详细命令输出来的,只要make的时候加上V=1即可。可以看到确实带了很多参数
编译参数:
-fpic
-mthumb-interwork
-ffunction-sections
-funwind-tables
-fstack-protector
-fno-short-enums
-Wno-psabi
-march=armv5te
-mtune=xscale
-msoft-float
-mthumb
-fomit-frame-pointer
-fno-strict-aliasing
-finline-limit=64
-Wa,--noexecstack
-D__ARM_ARCH_5__
-D__ARM_ARCH_5T__
-D__ARM_ARCH_5E__
-D__ARM_ARCH_5TE__
-DANDROID
链接参数:

-nostdlib
-Bdynamic
-Wl,-dynamic-linker,/system/bin/linker
-Wl,--gc-sections
-Wl,-z,nocopyreloc
-Wl,--no-undefined
-Wl,-z,noexecstack
-L$(PLATFORM_LIBRARY_DIRECTORYS)
crtbegin_static.o
crtend_android.o
这其中链接参数中的-Wl,-dynamic-linker,/system/bin/linker、crtbegin_static.o、crtend_android.o是最关键的,android使用了自己的进程加载器,并且自定义了c运行时的启动结束。难怪先前编译的进程启动不了。其实android ndk上的编译说到底也就是交叉编译,只要配置好交叉编译工具链,使用原有的makefile也是可以编译出在android运行的c、c++程序的。以android-ndk-r4-crystax的ndk版本为例:编译器路径 android-ndk-r4-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin名称前缀 arm-eabi-头文件目录 android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/include库文件目录 android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/lib你可以试一下上面的配置,如果编译链接都没有问题,可以adb push到android设备上运行看看,什么结果?有点崩溃,根本运行不起来,你也许想试试看android自带的ndk例子,确实是能够运行的,问题在哪儿呢?只是正确配置了编译器、头文件、库文件还不够,还需要配置编译、链接的参数,android例子中编译链接的参数是什么呢?你也许想深究一下android的makefile,可是不久你会发现那是更崩溃的事情,里面用了很多的make脚本函数。其实android的makefile是可以把执行的详细命令输出来的,只要make的时候加上V=1即可。可以看到确实带了很多参数编译参数:-fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Wa,--noexecstack -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID 链接参数:-nostdlib -Bdynamic -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,nocopyreloc -Wl,--no-undefined -Wl,-z,noexecstack -L$(PLATFORM_LIBRARY_DIRECTORYS) crtbegin_static.o crtend_android.o 这其中链接参数中的-Wl,-dynamic-linker,/system/bin/linker、crtbegin_static.o、crtend_android.o是最关键的,android使用了自己的进程加载器,并且自定义了c运行时的启动结束。难怪先前编译的进程启动不了。
喜欢阅读
  • 予你缠情尽悲欢

    予你缠情尽悲欢

    林迦爱上江淮亦的时候,他还只是个一无所有的混混。市井地痞和千金小姐的爱情自然被无数人津津乐道。但是她却义无反顾,她只要看着江淮亦的眼神,就觉得仿佛拥有了全世界。然而所有故事到最后都会有个可是。

  • 无敌医少

    无敌医少

    小偷偷我钱包,割包把我腿割破,老天开眼,雷劈小偷,却把我劈死,好不容易复活了,选个漂亮老婆做补偿,没想到却是个入赘的...

  • 情难自禁:总裁大人滚远点

    情难自禁:总裁大人滚远点

    “女人,偷了我的种就想跑?你把我当成什么了,基因提取库?”“下流!”云薇被他的语言羞得满脸通红,却又拿他没有办法。楚翼云发誓,不管这个女人跑到天涯海角,他也要把她追回来,锁在身边,哪怕当成囚犯,也休想再逃!“你跑一次,我就抓到你狠狠做一次,直到你认错为止!”这个男人,残忍霸道、狂妄自大,却是世人都不敢惹的商业大亨。尽管他脾气乖戾,性格残暴,却还是有数不清的女人对他趋之若鹜。云薇始终想不明白:“到底是那些女人脑子有问题,还是我自己脑子有问题?他……真的有这么抢手吗?”楚翼云笑得邪魅又张扬:“我难道不抢手吗,女人,你真该去看看眼科了。”

  • 用尽生命等你爱我

    用尽生命等你爱我

    殷茜爱了薄炎熙十年,可这个男人却是她的姐夫。他厌恶她,恨她,用尽手段羞辱她,折磨她;但悲哀的是,纵然被他伤得体无完肤,这份爱也没有减少,她究竟有卑微?!

  • 重生佳婿

    重生佳婿

    因为见义勇为去世的江成,侥幸得到医圣传承,借体重生为美女医生家中的上门女婿。“借你身体重生,我会帮你摆脱掉窝囊上门女婿的帽子。”“借你身体重生,我会帮你照顾好你如花似玉的老婆。”江成从此有了一个新的身份,新的生活,身边校花御姐加熟女,教师医生和白领,美女如云……

  • 风霜之王

    风霜之王

    从小就被送入敌国的风霜国王子陈均霖,历经磨难终于回归母国,执掌权柄。随着敌人一个一个的倒在了陈均霖的脚下,风霜国也变得愈加强大。而在陈均霖的统治之下,风霜城也最终成长为了一个让大陆所有国家的畏惧的强大国度。

  • 琉璃情纸牌心

    琉璃情纸牌心

    为救母亲,她签下合约与陌生男人上了床。“顾微安,你该不是食髓知味,舍不得走了吧?你只是代替我来贡献第一次而已,别痴心妄想了”顾微安冷眼看着眼前跟她长相一模一样的姐姐,满是复杂。“拿着钱,赶紧滚。”

  • 圣道真医

    圣道真医

    新出狱的陈立昂立于风中,一别多年,物是人非。被狱中对头复仇,却偶遇妙手圣者真传,从此叱咤风云,一跃而上!陈立,立于天地之间……

  • 猜你喜欢
  • 热门推荐
  • 保护树木的标语
  • 百度云7z文件怎么打开
  • 日本easy off 排宿便
  • 男生追女生的表现
  • 高鼎的村居带拼音
  • 最新加勒比人妻站着撸
  • 电脑视频转gif图
  • wow.the9.com
  • 如何给苹果id充值10
  • xe^-x的极限
  • advice on ways to
  • 2.3t野马改装800匹
  • 形容女子美如画的句子
  • 绿色守护 3.2.0
  • 知足者常乐 英文
  • 我的心巴金表达了什么
  • 1.999*2003-1.998*2004
  • 新速腾1.6排气管
  • 上海家具喷漆房视频
  • 百度贴吧首页登录
  • All Right Reserved 知识库