首页
登录 | 注册

Android原生(Native)C开发之十:用Code::Blocks来开发

-- 用Code::Bocok搭建Android Native可视化开发环境

可能很多朋友一直用文本编辑器来写Android的程序,经常会出现一些变量写错一个字母或少逗号分号的情况,直到编译时才会有错误提示,而且效率不高。如果你正为这个苦恼的话,我郑重且强烈地向你推荐:Code::Blocks!

关于Code::Blocks,我就不多介绍了,只记得三年前用过后,就很少用Dev C++及VC系列了,请从如下URL下载Nightly builds版本(强烈推荐用Nightly版,虽然有点不稳定,但有很多新功能):
http://forums.codeblocks.org/index.php/board,20.0.html
Windows版一般需要下载三个文件:
  • CB_20090516_rev5602_win32.7z(CB_YYYYMMDD_revXXXX_win32.7z,其中XXXX是SVN版本号)
  • wxmsw28u_gcc_cb_wx2810.7z(wxWidgets库,CodeBlocks基于wxWidgets)
  • mingwm10_gcc421.7z(MinGW库,CodeBlocks是用MinGW编译的)
下载这三个文件后,解压至同一个目录,就完成了安装,下面我们就来一步一步设置Android的IDE开发环境!
首先,假设你已经配置好了Cygwin的Android的arm开发环境(详情请参见另一篇:Android原生(Native)C开发之八:Toolchain环境搭建篇),打开CodeBlocks,选择菜单“Settings->Compiler and debugger...”,如下图:

在弹出的窗口中选取“GNU ARM GCC Compiler”,当然也可以Copy一个新的,但为了方便就用这个了,再进行如下设置:
  • 将“Toolchain executables”页的“Compiler's Installation directory”设置为你的toolchain的目录;
  • 将“Toolchain executables”页的“Program Files”所有arm-elf-xxx.exe改为arm-eabi-xxx.exe;
  • 在“Toolchain executables”页的“Additional Paths”加入Cygwin的bin目录,因为toolchain是用Cygwin构建的,需要Cygwin的运行库,如“D:\Cygwin\bin”;
  • 在“Search directories”页的“Compiler”中加入Toolchain的头文件目录,并假设你已将Android所有庆文件复制至此目录,如“E:\toolchain\lib\gcc\arm-eabi\4.2.1\include”;
  • 将“Other settings”的“Compiler logging”改为“Full command line”,这样就能看到编译器是如何编译链接的。
至此,CodeBlocks交叉编译器基本设置完成,按“OK”保存,可以开始测试IDE开发环境了!

选择菜单“File->New->Project...”,在弹出的窗口中选择“Console application”(在第一排的最后一个),双击或点击“Go”按钮,在弹出的语言窗口中选择“C”语言(因Android Toolchian对C++的支持不怎么全),再点击“Next”按钮,将出现设置Project路径的窗口,先选择项目要保存的目录,再输入项目的标题,系统会自动生成项目的文件名及保存路径,如目录为:C:\projects,标题为: test,则项目文件名为:test.cbp,保存路径为:C:\projects\test\test.cbp,再连续点击“Next”按钮即可生成新项目,可能会有一些提示,可以忽略。
这个时候你就可以选择菜单“Build->Build”或按“Ctrl-F9”来编译项目,下面的消息面板“Build Log”应该显示如下:
arm-eabi-gcc.exe -Wall  -g    -IE:\toolchain\lib\gcc\arm-eabi\4.2.1\include  -c main.c -o .\main.o
arm-eabi-g++.exe  -o .\test.exe .\main.o   
/cygdrive/e/toolchain/lib/gcc/arm-eabi/4.2.1/../../../../arm-eabi/bin/ld: crt0.o: No such file: No such file or directory
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
0 errors, 0 warnings
可以看到,编译main.c成功,但链接时出错,没关系,接下来我们来设定项目的编译链接选项!
选择菜单“Project->Build options...”,将显示项目创建选项窗口中的“Compiler settings”页,再选择“Other options”,输入如下内容(详情请参见另一篇关于编译选项的文章:Android原生(Native)C开发:编译选项小结):
-include AndroidConfig.h
-fpic
-ffunction-sections
-funwind-tables
-fstack-protector
-fno-short-enums
-fomit-frame-pointer
如下图:

编译选项设置完成,再来设置链接选项。选择“Linker settings”页,点击左边“Link librarys”方框中的“Add”按钮,在弹出的窗口中输入:c(注意为小写,即需要动态链接libc.so库),再按“OK”按钮即可,再在右边的“Other link options”方框中输入如下内容(其中的E:\toolchain为toolchain的安装目录):
-nostdlib -Bdynamic
-Wl,-T,armelf.x
-Wl,-dynamic-linker,/system/bin/linker
E:\toolchain\arm-eabi\lib\crtbegin_dynamic.o
E:\toolchain\arm-eabi\lib\crtend.o
如下图:

最后按“OK”按钮保存所有的设置,再选择菜单“Build->Rebuild”或按“Ctrl-F11”来重新编译项目,下面的消息面板“Build Log”应该显示如下:
arm-eabi-gcc.exe -Wall  -g -include AndroidConfig.h -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -fomit-frame-pointer -DANDROID    -IE:\toolchain\lib\gcc\arm-eabi\4.2.1\include  -c main.c -o .\main.o
arm-eabi-g++.exe  -o .\test.exe .\main.o   -nostdlib -Bdynamic -Wl,-T,armelf.x -Wl,-dynamic-linker,/system/bin/linker E:\toolchain\arm-eabi\lib\crtbegin_dynamic.o E:\toolchain\arm-eabi\lib\crtend.o  -lc
Output size is 7.58 KB
Process terminated with status 0 (0 minutes, 2 seconds)
0 errors, 0 warnings
编译成功,可以push到模拟器中去运行了!

相关文章

  • 直播APP开发之iOS开发中的列表优化思路
    APP开发中,列表可能是平时我们打交道最多的UI控件之一,其重要性不言而喻,对其性能的优化同样至关重要.而对于iOS开发,列表就是我们常说的UITableView / UICollectionView.在进行直播APP开发时针对于列表的优化 ...
  • 微信小程序开发之全屏显示
    我的小程序只有一个地图,如下代码,但他不是全屏的, 效果如下: 打开控制台进行css控制,但还是不行,所以得控制page. 原文链接
  •         在上一篇系列文章<>里我们说道,Android 就像我们熟悉的装在各种电脑上的 Windows 系统一样,可以装在 ...索尼爱立信.LG.华为.中兴等手机生产商生产的手机上.        但是我们发现,我们买 ...
  • 互联网后台开发需要掌握什么?
    本文内容仅针对互联网后台开发从业人员. 互联网后台开发,通常意味着分布式.大数据,涉及到高性能.系统容灾.数据容灾.高可用性.数据一致性等.自从2008年Hadoop在华夏大地蓬勃发展,开源如火山爆发在业界百花齐放,茁壮成长.国内的BAT. ...
  • 1.移动前端开发之viewport的深入理解 2.CSS中强大的EM 3.自适应网页设计(Responsive Web Design) 4.用ul.li做横向导航 5.使用X-UA-Compatible来设置IE浏览器兼容模式 6.渐进增强 ...
  •   什么是快速开发框架 前言 做为一个程序员,在开发的过程中会发现,有框架同无框架,做起事来是完全不同的概念,关系到开发的效率.程序的健壮.性能.团队协作.后续功能维护.扩展......等方方面面的事情.很多朋友在学习搭建自己的框架,很多公 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
京ICP备10005923号