codeblock调用android-ndk编译调试,手机中的console应用。

本文介绍了如何在Codeblock中配置和使用Android NDK进行交叉编译,包括设置编译器路径、配置编译和链接选项、指定头文件和库路径。同时,详细阐述了调试过程,涉及到gdbserver的使用、ADB命令的配合以及远程调试的步骤。文章强调了Codeblock作为IDE的功能,并对比了与其他编译环境的差异,提醒读者注意不同平台间的兼容性和配置难度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,codeblock是不用安装的,下载的zip包,在解压后运行前。先从android ndk中,安装NDK独立编译工具。并把目录加入的window的path变量中。这样在打开codeblock就能自动找到这个工具应生成一相对应的编译目标选项。

"D:\Program Files\python27\python" make_standalone_toolchain.py --arch arm --api=9 --install-dir=d:/ndk-arm --force

如果不这样做,可能就要自已配一个编译选项。

1,codeblock菜单setting->complier setting ->copy(gnu gcc complier)自已命名一下。

2,配置其compiler settings选项卡的下 :(这样配置要能要按自已的需要去改,这里的主要是用于gcc 的参数,但名字写法都不太一样)

其下other compiler options :-Istdc++

其下#defines加入

android_ndk=D:\android-ndk\android-ndk-r10e
ANDROID
__ARM_ARCH_5TE_
TVP_TRACE

3,配置其linker settings 加入要link libraries: (这是对链接库的配置)

stdc++(这个必需的。 ),还可能要加入m c这些我不知什么意思,见别人这样加过,多加了,不用不会报错的。可能是JNI之类的用的。

4,配置其search directories (这里是找头文件,找lib的路径)

这是头文件(compiler用)的:

D:\android-ndk\android-ndk-r10e\platforms\android-9\arch-arm\usr\include

D:\android-ndk\android-ndk-r10e\sources\cxx-stl\gnu-libstdc++\4.8\include

D:\android-ndk\android-ndk-r10e\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi\include

D:\android-ndk\android-ndk-r10e\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\include

D:\android-ndk\android-ndk-r10e\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\lib\gcc\arm-linux-androideabi\4.8\include

这是库(link用)的:

D:\android-ndk\android-ndk-r10e\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi

D:\android-ndk\android-ndk-r10e\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\lib\gcc\arm-linux-androideabi\4.8

D:\android-ndk\android-ndk-r10e\platforms\android-9\arch-arm\usr\lib

5,然后就是配工具了,在选项卡toolchain executables,在complier'installation directory 注意是bin的上一级目录就可。

programFiles就是bin目录下的带长长前缀的gcc ,g++之类了。有意思的是c++complier用g++, linker for dynamic libs:也用g++.

但linker for static libs 用ar.  debugger又开了人个配置菜单。这里先不选。

到这里简单的hello word 应当是可以编译通过了。

如果报错,先用安装NDK独立编译工具试试吧。我实际用时,因为是看别人配成.so的编译配置去试的报了许多错误。安装NDK独立编译工具的好处是许多选项是在安装独立工具时配好的,并且独立工具可用非,是可以通过命令先试出来的。codeblock写法与gcc有差别,所以分步去配容易找出问题。如果是写so.给JNI用的话,还是有AS吧。codeblock,并不是独立的编译工具,它的许多应用还是依赖,NDK,这与codesoucery完全不一样,codesoucery带有标准的C库存实现。

codesoucery也有好处是,我配成了用gdb的IDE界面去调试。

要配调试;

1,codeblock菜单setting->debugger setting -> create config自已命名一个。

2,在自已命名的debugger config下配executable path: 找到gdb.exe的目录。配成它。

这个配置其它的可以不动。

3,菜单debug->active debug中选择自已配的。

4,菜单project ->properties下,debugger选项卡,debug的target,remote connection选项卡,ipaddress :

写为localhost。port写为1234(这个与一会目标机上的一至,并且没别的东西用就好)。这些也是人gdb命令调用的参数。但与命令调用时写法有点不一样,在菜单中分成了三个部分配它。这是因为需要改动的时机不一样。有些东西,只要配一次对全部的工程都实用。有些一换调试方法就要改,所以分成了这三个地方去配,用命令的话,只是一行写完,但用命令,在调试时看代码参数都不方便。这里gdb调试的客户-服务器模式的,客户机就配完了。

5,服务器用全手工,ADB命令配吧。写在codeblock的调试前调用中,老卡死,我也不知为什么。

首先:c:/adb/adb push D:\work2018\android-ndk-qu\codetest\bin\Debug\gdbserver /data/ququfile/Ctest

c:/adb/adb push D:\work2018\android-ndk-qu\codetest\bin\Debug\te /data/ququfile/Ctest
c:/adb/adb shell  chmod 777 /data/ququfile/Ctest/te
c:/adb/adb shell /data/ququfile/Ctest/gdbserver localhost:1234 /data/ququfile/Ctest/te

这里te是我编译产生的。gdbserver 没找到用codeblock如何生成,把有AS编译下生成的直接copy过来用.如果平台不变,gdbserver只要下载一次就好。/data/ququfile/Ctest是我在手机上生成的测试用目录。本来我是把这些写在调试前调用的。

c:/adb/adb shell /data/ququfile/Ctest/gdbserver localhost:1234 /data/ququfile/Ctest/te 这个调用失败的原因可能是权限,这里调用是shell权限。我在adb shell后,su进入了root。然后,调用的:

#/data/ququfile/Ctest/gdbserver localhost:1234 /data/ququfile/Ctest/te

在pC端带要一个命令映射一下网络接口。>adb forwrd tcp:1234 tcp:1234 用adb 把两边的网络接口连接上。如果网络通时,可能有接接用网络的方法,我没去试。adb用的Usb比无线网络快。

最后,在codeblock的界面上设置断点,启动调试,就能连上了,就可以看到配置结果了。

这个东西配好后对解决我的LLDB编译问题一点用也没有,一个工程代码换一个编译环境就是一个大坑,这个坑没事不要去跳了。很难的。能用原环境就听什么跨平台的说法,这个跨平台的坑不是一般的深,因为个个平台都想搞出自已的特色,跨平台随着版本变化的坑相当的深。并且通常不是自已熟练,的编程领域的东西。

结论codeblock也就是一个IDE,和eclipse差不多,可能codeblock的开源性,好一点吧。感觉也就一般。

LLVM是一个编译器架构,架构这个词用的有意思,有点放大一点的模板的意思。是一些代码,还用代码调用的标准组成的一个预构造的东西。面向一类的应用场景,提供快速的解决方案。架构也许是机器自动生成代码的一种解决方案。架构标准,应用目标描述,相结合,让机器自动生成面向实际应用的解决方案。这里架构,应用描述,机器编程如何结合在一起呢。有空再去充一下电。理解一下架构,与架构自动化。

 

开源——开源不仅仅意味着免费,但就算是仅仅是免费这一点,就非常重要了,不是吗? 跨平台——我的工作需要写的C++程序,就要求是跨Linux和Windows平台,没有选择Code::Blocks之前,我在Linux下用KDevelop,在Windows下使用Borland 或 Microsoft的软件,由于二者不兼容而要多做的事情太多。或许你暂时并不考虑跨平台,但为了将来,能跨平台总不是坏事,对了Code::Blocks也支持Mac系统呢。 纯C/C++写成——作为一名C++程序员,我“顽固”地保留一点可能并不必要的自尊:写C++程序,还是用C++写的IDE吧。让我选择一款以其它语言写成的IDE来写C++程序,我有那么一点点完全不必要的心理障碍。其实用C++写的程序最大好处是你不用额外安装庞大的运行环境,譬如你不用装.net也不装java。 支持多编译器——包括Borland C++,、VC++、Inter C++等等超过20个不同产家或版本编译器支持。无特定要求下,我还是主要用g++。配对的,调试器也是支持多种。 插件式的框架——插件式的集成开发环境,最著名的是Java编程工具Eclipse了,这种方式让一款IDE保留了良好的可扩展性,应该说,作为一款开源的IDE,这是最合理的选择。Code::Blocks很多核心功能,包括“调试功能”,都通过插件来实现。非核心方面的插件嘛,我用得最多的,是代码格式美化、自动上Google Codes查找……偶尔也会玩玩“俄罗斯方块”以及“贪吃蛇”…… 经常更新——几乎每个月都会有更新。开源软件最怕的就是不更新了。 内嵌可视设计——和大家熟悉的VB、Delphi/C++Builder相比,它的可视窗口设计器,其“傻瓜性”差了一大截,其主要原因在在主流的跨平台图形窗口的定位体系,都是采用定位“容器”来实现的,这一点一开始会不太习惯,但在熟悉之后,设计各种对话框,也非常直观。一点点不直观,换来的是你的程序很容易迁移到别的操作系统,同时还让你对窗口设计更深入了,倒也值。 C++扩展库支持——通过它的一个用以支持Dev C++的插件,可以下载大量C++开源的扩展库。比如网络操作,图形算法,压缩、加密等等……我现在最常用到一款就是iconv,用来转换汉字编码。扩展库下载,及使用方法,请见本站相关课程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值