ubuntu编译arm
⑴ zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
本文主要介绍了zlib库的特性、下载方法,以及在ubuntu上进行arm平台的交叉编译步骤。zlib是一个免费、通用且不受专利保护的数据压缩库,适用于各种硬件和操作系统。以下是具体的操作流程:
首先,确保你的交叉编译环境已准备就绪,包括制作交叉编译链工具并将其添加到环境变量中。在终端中,创建环境文件`env.sh`,并编辑它以包含交叉编译器的路径。启动控制台并运行`source ../tool/env.sh`来引入这些设置。
接下来,解压zlib库(如zlib-1.2.11.tar.gz),并使用交叉编译器进行配置和编译。在`makefile`中可能需要修改CC的设置以确保正确连接库。执行`make`进行编译,然后用`sudo make install`进行安装。
模块化部分,虽然Ubuntu上对库的模块化不包含库,你可以参考《zlib开发笔记(一)》了解更多信息。此外,工程模板zipDemo_v1.0.0_基础模板可供参考,但可能需要根据ubuntu系统的问题进行适当调整。
以上就是在ubuntu上进行arm平台zlib库交叉编译的详细步骤,如果你对其他平台或版本有疑问,可以查看《zlib开发笔记(二)》或期待后续的文章更新。
⑵ ubuntu怎么安装arm交叉编译工具
Ubuntu下安装ARM交叉编译器过程笔记,有图有真相。
linux下armcc和arm-linux交叉编译环境的配置
2、开始安装(建议大家新建一个文件夹),然后将文件复制到新建的文件夹中
Ubuntu下安装ARM交叉编译器图文教程
输入命令:sudotarxvzfarm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
Ubuntu下安装ARM交叉编译器图文教程
安装完成后,输入ls命令,可以看到一个opt文件夹,如下图
Ubuntu下安装ARM交叉编译器图文教程
3.修改环境变量,把交叉编译器的路径加入到PATH:
利用tab键的补齐功能进入该路径,如下图
输入pwd命令,查看当前路径的绝对路径
/home/cf/ARM/opt/FriendlyARM/toolschain/4.5.1/bin
⑶ ubuntu编译osmocombb完要多久
ubuntu编译GNUARM以及OsmocomBB环境方法如下,时间的话看你代码速度啦
以下所有操作基于Ubuntu Linux下,所以基于Ubuntu、Debian等Linux版本均可使用。
一、以Root权限进行接下来的所有操作:
$ sudo -s
二、安装编译osmocomBB所需的软件包:
$ aptitude install libtool shtool autoconf git-core pkg-config make gcc
三、下载所需要的GnuARM ToolChain
基于x86架构
$ wget http://gnuarm.com/bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2 网络网盘
$ tar xf bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2
$ mv gnuarm-* ~/gnuarm
基于64位架构
$ wget http://www.gnuarm.com/bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4_x86-64.tar.bz2 网络网盘
$ tar xf bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4_x86-64.tar.bz2
$ mv gnuarm-* ~/gnuarm
这样子就已经完成了关于OsmocomBB的交叉编译环境的搭建,剩下就是最关键的设置环境变量
$ export PATH=~/gnuarm/bin:$PATH
建议是直接编辑~/.bashrc的内容,把上面的这个段话直接加到最后。
四、编译libosmocore:
$ git clone git://git.osmocom.org/libosmocore.git
$ cd libosmocore/
$ autoreconf -i
$ ./configure
$ make
$ make install
$ cd ..
$ ldconfig
ldconfig命令一定不要忘记执行,否则osmocomBB编译后运行时会出现找不到libosmocore.so.4的错误。
五、编译OsmocomBB:
$ git clone git://git.osmocom.org/osmocom-bb.git
$ cd osmocom-bb
$ git checkout --track origin/luca/gsmmap
$ cd src
$ make
基本上已经完成所有的编译操作了!Enjoy你的玩具吧!
使用OsmocomBB
首先我们需要在刷写固件之间完成以下几个手动操作,以便接下来的其他操作。因为摩托罗拉C118的数据连接线是用2.5mm音频接口的,所以连接方面大家要注意的是:
连接线接口的小缺陷
红色框住的地方可能会导致大家在误以为接口已经完全和手机接口衔接了,但在刷机的时候没有任何反应。所以这个部分需要大家自己去削一下的。
连接线与TTL的接法
黑/黄:GND
红:TX
白:RX
以上的接法是针对我们RadioWar淘宝店所出售的CP2102以及FT232rl,而基于淘宝其他的产品可能会在TX和RX部分需要反接,大家要记住。有些朋友会说为什么我们不建议PL2303,那是PL2303只有标准的波特率,所以无法进行任何调制,在真正功能固件上使用会出现很大的问题。所以我们不建议使用PL2303
当我们处理完以上的操作之后,就在osmocomBB套件目录下进行相关固件刷写操作,请记住这个操作过程只是临时性的,固件只是以RAM TO ROM的途径下进行临时刷写,关机后原有的摩托罗拉系统依然会存在的。
cd ~/osmocom-bb/src/host/osmocon/
启动osmocon刷写所需要的固件,通常大家都是直接刷写Layer1的固件。
./osmocon -m c123xor -p /dev/ttyUSB0 ../../target/firmware/board/compal_e88/layer1.compalram.bin
看清楚c123xor是基于C118的,非C118的手机请不要使用这个,并且记住C118的固件目录就是compal_e88,在输入以上命令之前,手机必须连接好连接线以及TTL,并且确保手机必须为关键状态。命令输入完成后,当前命令窗口会出现以下类似信息:
got 1 bytes from modem, data looks like: 2f /
got 1 bytes from modem, data looks like: 00 .
got 1 bytes from modem, data looks like: 1b .
got 4 bytes from modem, data looks like: f6 02 00 41 ...A
got 1 bytes from modem, data looks like: 01 .
got 1 bytes from modem, data looks like: 40 @
出现以上信息后,直接轻按手机的红色开机键,只需点亮机器而不需要进入手机的系统!!!这样子信息状态会显示类似以下的信息:
Received PROMPT1 from phone, responding with CMD
read_file(../../target/firmware/board/compal_e88/layer1.compalram.bin):file_size=56016,hdr_len=4,dnload_len=56023
got 1 bytes from modem, data looks like: 1b .
got 1 bytes from modem, data looks like: f6 .
got 1 bytes from modem, data looks like: 02 .
got 1 bytes from modem, data looks like: 00 .
got 1 bytes from modem, data looks like: 41 A
got 1 bytes from modem, data looks like: 02 .
got 1 bytes from modem, data looks like: 43 C
Received PROMPT2 from phone, starting download handle_write(): 4096 bytes (4096/56023)
handle_write(): 4096 bytes (8192/56023)
handle_write(): 4096 bytes (12288/56023)
handle_write(): 4096 bytes (16384/56023)
handle_write(): 4096 bytes (20480/56023)
handle_write(): 4096 bytes (24576/56023)
handle_write(): 4096 bytes (28672/56023)
handle_write(): 4096 bytes (32768/56023)
handle_write(): 4096 bytes (36864/56023)
handle_write(): 4096 bytes (40960/56023)
handle_write(): 4096 bytes (45056/56023)
handle_write(): 4096 bytes (49152/56023)
handle_write(): 4096 bytes (53248/56023)
handle_write(): 2775 bytes (56023/56023)
handle_write(): finished
got 1 bytes from modem, data looks like: 1b .
got 1 bytes from modem, data looks like: f6 .
got 1 bytes from modem, data looks like: 02 .
got 1 bytes from modem, data looks like: 00 .
got 1 bytes from modem, data looks like: 41 A
got 1 bytes from modem, data looks like: 03 .
got 1 bytes from modem, data looks like: 42 B
Received DOWNLOAD ACK from phone, your code is running now!
battery_compal_e88_init: starting up
看到以上的信息就证明你的固件刷写操作已经成功了,下来的操作可以是扫描基站或者其他简单而快速的方法:
扫描基站
~/cell_logger/osmocom-bb/src/host/layer23/src/misc/cell_log -O
扫描某一个基站,例如30
~/cell_logger/osmocom-bb/src/host/layer23/src/misc/ccch_scan -i 127.0.0.1 -a 30
将扫描基站的日志保存到本地
mpcap -i lo -w ~/cell_logger/mobilelog/Cell.log
打开WireShark实时读取相关的信息
sudo wireshark -k -i lo -f 'port 4729'
⑷ Ubuntu 下搭建 GCC 交叉编译工具链
Ubuntu环境中搭建GCC跨平台编译工具链是嵌入式开发的重要步骤,它允许在X86架构的PC上编译ARM架构的代码。首先,交叉编译是区别于本地编译的概念,针对不同平台的程序编译,而交叉编译工具链则是一系列工具的集合,包括预处理、编译、汇编和链接等,自动化编译流程,生成可移植的二进制程序。
在Ubuntu下,我们需要安装Linaro出品的针对Cortex-A7内核的ARM-Linux-GNU-EABI编译器,根据系统位数选择32或64位版本。首先,下载编译器并将其复制到特定目录如/usr/local/arm,解压后,在/etc/profile中添加环境变量。为了确保编译器的正常使用,还需要安装相应的库。验证安装成功的方法是通过运行交叉编译器并查看版本号,如arm-linux-gnueabihf-gcc,如显示版本号,说明工具链安装已成功。
总结来说,Ubuntu下的GCC交叉编译工具链搭建旨在为嵌入式开发提供必要的环境,通过选择合适的工具链版本,配置环境变量,并验证工具的可用性,开发者可以在X86平台高效地编译ARM代码,实现跨平台开发。