Sam一直是Makefile流,这些天需要移植一些游戏引擎模块。这些模块在其它嵌入式平台上是使用CodeBlocks编译的,Sam不想再去写Makefile。所以只好学习使用CodeBlocks交叉编译了。

 

与Makefile相同,CodeBlocks也需要提供交叉编译器,并指定include,library目录。过程如下:

 

0. 打开多个Code::Blocks 窗口 :

Settings->Environment中将:Allow only one runing instance去掉勾选即可。

 

1. 交叉编译器的设置:

Settings->Compiler and debugger... -->Global compiler settings

这里说的很明确,是编译器的设置。

 

已有的编译器通常会包含:GNU GCC Compiler. Inter C/C++ Compiler等。

我们需要为自己建立一个针对交叉编译环境的编译器。下面以MIPSEL为例:

 

1.1:创建:

按Copy Button. 输入新名字,如:BCM72xx_Compiler.(这是Sam使用的Broadcom编译器,CPU 为 MIPSEL架构)

1.2:指出交叉编译器所用编译器,链接器等。

选定:Toolchain executables(呵呵,这里说的多明白,toolchain的执行程序)

C compiler: mipsel-linux-gcc  (其实这里填mipsel-linux-g++也可以,详见博文GCC,G++区别)

C++ compiler: mipsel-linux-g++

Linker for dynamic libs: mipsel-linux-g++

Linker for static libs: mipsel-linux-ar

Debugger:mipsel-linux-gdb (这个没用过,估计要架GDB Server)

Make program: make

 

 

 


1.3: 指出交叉编译器PATH:

与Makefile相同,你只使用mipsel-linux-gcc,系统会找不到这个可执行程序在哪,需要export PATH=...

在Toolchain executables中:在Compiler's installation directory.写入toolchain的目录。注意:这里通常不是指放置mipsel-linux-gcc的那个bin目录。而是bin上级目录(toolchain目录)

或者在Additional Patchs中放入bin目录。

 

这里有2个地方需要注意:

1.Compiler's installation directory:

这个目录是指:Toolchain安装的目录。
2. Additional Paths:

这里是指编译器所在目录。

差别如下:

1是指toolchain的安装目录,如:

/opt/toolchains/crosstools_hf_linux2.6_gcc_4.2_uclibc_nptl/

2则是指放置mipsel-linux-gcc的目录。

 

1.4: 指出Include,Library目录:

与Makefile相同,需要指出Toolchain include,library目录。供交叉编译器查找系统头文件以及系统库。

Search directories -> Compiler

写入toolchain include目录。

Search directories -> Linker:

写入toolchain library目录。

 

 

 

2. 项目编译相关设置:

再次说到与Makefile相同,项目也需要有自己专有的设定,例如:项目include目录(-I),library目录(-L),#define(-D)乃至编译选项如-g, -Wall. 编译什么库进来(-l)等。

 

2.1: 项目头文件目录:

右击项目,选Build Options. Search directions->Compiler。这里通常写入项目的头文件目录。等同于-I

 

2.2:项目库文件目录:

右击项目,选Build Options. Search directions->Linker。写入库文件目录。等同于 -L

 

2.3:#define

右击项目,选Build Options. Compiler Settings->#defines.可以写入,例如:LINUX_BCM. 相当于-DLINUX_BCM.

或者在Other Options中写入:例如:-fpic -shared, -EL(little endien)等。

 

2.4:编译选项:

右击项目,选Build Options. Compiler Settings->CompilerFlags:

 

2.5:需要链接的库文件:

右击项目,选Build Options. Linker Settings->Link libraies:添加需要的库。例如:pthread, dl等。

 

2.6: CFLAGS,LFLAGS:

Build Option,选定指定Build Target.

CGLAGS在Compiler Settings中Other Options:

LFALGS在Linker Settings: Other linker options.

 

 

3. 项目输出设置:

如Makefile一样,我们需要设置最终生成的对象是可执行程序?动态库?静态库? 以及目标文件放置地点。

右击项目,Properties...选择build targets:

Type:生成的类型(可执行程序?动态库?静态库?)

Output filename: 输入文件放置地点。

 

3.1工程编译新平台目标代码:

工程中通常会有Debug,Release 2个Build Target。

我们可以使用Proerties->Build Target->Duplicate工具Dump出我们所需要平台的Build Target。

例如:Broadcom_BCM7413_Rel:是指Broadcom7413的Release版本。

此时选择输入Type(可执行程序?动态库?静态库?)

Output filename: 输入文件放置地点。

Objects output dir: 中间文件目录。

 

之后选择Build Options。 选择对应Build Target。

指定本工程 CFLAGS, LFALGS(见前文)

以及Link的库(静态库可以带路径,动态库则不要带路径,路经在search directories中指定)

 

4. Build log中输入完整编译语句:

常常需要看到CodeBlocks所使用的编译语句是否我们想要使用的。可以如下设置:

Settings -> 选择对应编译器如: Broadcom_BCM7213_Compiler -> Other Settings

将选项Compiler Logging: Full command line

即可。



Codeblocks & 开发板调试简单教程

  (2009-07-20 13:40:47)
标签: 

it

 

codeblocks

分类: 我的活儿

(我的个人博客站www.mculover.com)

远程调试十分也有用,而且很方便!Codeblocks作为linux下的C/C++ 集成开发环境(IDE)也十分好用。

1.PC机的Codeblocks设置:
当然,肯定是要装有Codeblocks才行啊,怎么装可以google一下。
# codeblocks 打开Codeblocks
启动起来后先新建一个工程:File--New--Project
Codeblocks <wbr>& <wbr>开发板调试简单教程
到如下界面,会让你选择新建工程的类型,这里选择console application。
Codeblocks <wbr>& <wbr>开发板调试简单教程
接着,选择语言类型,这里选择C。
Codeblocks <wbr>& <wbr>开发板调试简单教程
接着,next>,给工程取名,和设置工程路径。如下图:
Codeblocks <wbr>& <wbr>开发板调试简单教程
再Next>设置使用的编译器,由于后面还得修改所以先默吧,不管,后面在改!
Codeblocks <wbr>& <wbr>开发板调试简单教程
再Finish完成!
Codeblocks <wbr>& <wbr>开发板调试简单教程
点击小三角可以一级级目录看下去,这就是工程目录结构了。一直展开,发现自己已经生成了一个main.c!哈哈,人性化啊!自己随便加点小代码吧!
Codeblocks <wbr>& <wbr>开发板调试简单教程
到此。工程是建好了,接着就是设置一下再编译再远程debug了。先设置交叉编译器,选择project--build options。
Codeblocks <wbr>& <wbr>开发板调试简单教程
进入编译器选择:选择GUN ARM GCC Complier,下面第一个要打钩,也就是加上-g参数使得编译出来的程序可以arm gdb调试。
Codeblocks <wbr>& <wbr>开发板调试简单教程
ok,编译器选好了,接着设置编译器 settings---complier and debugger。
Codeblocks <wbr>& <wbr>开发板调试简单教程
选择要设置编译器。这里就是GUN ARM GCC Complier
Codeblocks <wbr>& <wbr>开发板调试简单教程
在选择toolchain executables标签。要说明的是下面的complier c++ complier Linker 。。。。都是自己本机的交叉编译工具链。
Codeblocks <wbr>& <wbr>开发板调试简单教程
点击 ... 浏览工具的位置。我的是将交叉编译器安装在了 /usr/local/arm/3.4.1 下了!并将arm-linux-gdb另外安装好之后cp到了和arm-linux-gcc等工具的一个目录下了(/usr/local/arm/3.4.1/bin/),方便设置!
Codeblocks <wbr>& <wbr>开发板调试简单教程
挺重要的一点是:中间的目录一定要设置正确,一定是交叉编译工具链bin目录的上一级目录,我的是/usr/local/arm/3.4.1/bin/目录的上一级,即为/usr/local/arm/3.4.1
Codeblocks <wbr>& <wbr>开发板调试简单教程

ok!编译器设置完成。即可编译了。build---build
Codeblocks <wbr>& <wbr>开发板调试简单教程
接着就要设置远程调试的ip和端口了,为了连接开发板的gdbserver!选择build---propertiles。
Codeblocks <wbr>& <wbr>开发板调试简单教程
再选择Debugger标签。点击下面的debug填入开发板IP和端口,端口可以随意,但是必须和开发板上gdbserver监听的端口一致!
Codeblocks <wbr>& <wbr>开发板调试简单教程
。。。
然后的就是和普通的IDE一样了~

还有就是开发板的mount和gdbserver。。。。网上很多。


Logo

更多推荐