‘壹’ arm-linux-gcc交叉编译器的制作,以及版本选择问题。
,需要必须有足够动经验来支持。
另外,用 RH9 的都是高手,我想你的知识不需要来提问了吧?
1、在 PC 上编译 arm 的程序当然需要较差编译器,这个需要自己安装,或者着现成的交叉编译器环境,一般是一个特殊参数编译出来的 gcc + binutils + glibc + linux-header。这个每个人动环境不同,一般都需要自己编译一个,当然没有特殊需求,也可以找现成的。不过很难找,因为这套环境还要和你动系统搭配,不然环境不匹配,连这个环境都不能运行,那就更谈不上编译东西了。
有关自己编译搭建交叉编译环境,可以看看一个特殊的 Linux 发行版 LFS 的分支: CLFS 。
2、移植分很多意思,移植有可能就意味着这套源代码不能在目标系统上面编译,需要你根据相应的知识去修改源代码来让这套代码适应目标编译器的要求,比如源代码有 SSE4 的优化,这套程序在非 SSE4 CPU 上无法编译运行,但目标机器连 SSE1 都不支持。那么就需要移植。
或者移植仅仅是根据新的环境进行编译,不需要进行源代码修改,只需要进行一下编译就能运行的程序,也可以称为移植,就是从一个环境、架构 -》另一个环境、架构。都可以称为移植,但真正的移植意味着修改程序源代码来适应新环境。你说的这种移植是最简单的移植。
3、决定目标硬件环境 -》搭建目标编译器 -》制作目标环境(内核,基础软件库)-》进行应用移植(移植需要的软件、主应用程序)-》搭建系统文件系统 -》导入目标系统-》启动目标系统&应用。说起来很简单,因为这是完全没有问题的条件下。
至于超级终端。那是用来控制目标系统的。目标系统有可能不能插键盘鼠标显示器,这就需要一个远程网络链接来进行控制。以及通过远程链接来发送数据。这都需要终端的支持。
虚拟机下面进行开发,不能发挥你的计算机的性能。而且因为隔着 VMware 的软件模拟层,可能还不会很方便的让你链接目标设备。
至于用 socket ,我还没见到你的目标需要这个东西,因为所有的东西都是现成的源代码。不需要你从 0 开始写,当然你想自己写一个系统内核,或者服务器程序,或者全套的系统+应用,我绝对不拦你,但希望你写完这套东西,能把源代码发布出来。
ads 可以认为是一个支持环境,他本身不是一个系统的开发 SDK 。
-------------------------------------
ads 没用过,印象里他还有模拟器,调试器什么的程序。功能上要比 Linux 开发环境,WinCE 环境下面的东西更多更偏向于硬件方面,毕竟 ads 是 arm 出品的,不太可能偏向于软件部分设计。Linux 和 WinCE 都是系统而不是硬件工具。
你可以认为交叉编译器是一个应用程序,一个输出器。把源代码输出为 arm 的代码,这个应用程序的输出,是靠他自己的环境,而不是当前系统的环境的。
当前系统的各个软件的版本,不能影响交叉编译器输出的环境(理论上,现实有的时候总是从别的地方给你打击……),交叉编译器一般至少有 gcc 、binutils 、glibc 库、linux kernel 头文件。
在软件需求上。
头文件谁都不依赖,glibc 只需要内核头文件,其他程序全都依赖于 glibc 。也就是所有程序都不依赖内核,仅仅是依赖于内核头文件。
gcc 和 binutils 是把程序源代码根据上面各个环节的需提供的功能来输出为上面环节里面的二进制程序。依赖你当前环境的,只有 gcc 和 binutils 两个程序的执行、控制环节。只有他们两个依赖的,而不是你的交叉编译后的程序。
至于编译器版本的选择,新版本功能更好,旧版本兼容更好。
这个要看你的实际需要了。应用程序源代码也调编译器的,同时也依赖于软件库的功能。
arm 开发建议稳定、兼容优先。当然也可以尝试最新的编译环境,来获取更好的优化(前提是还有什么代码优化的话)。
另外,团IDC网上有许多产品团购,便宜有口碑
‘贰’ 在VMware Workstation中安装的Ubuntu系统,主文件目录下没有usr文件。因此安装交叉编译器时路径一直不对
desktop document download pictures music public这些都是在/home中,/usr是在根目录(/)下的,基础确实没做好
‘叁’ 如何在linux虚拟机里安装交叉编译
安装Arm-Linux交叉编译器正确的方法:
首先我用的是天嵌自带的交叉编译器EABI-4.3.3_EmbedSky_20100610.tar.bz2,
1. 首先建一个存放交叉编译器的目录,我建的目录的绝对路径是:/opt/TQ (TQ就是我建的目录)
2. 解压EABI-4.3.3_EmbedSky_20100610.tar.bz2:
tar xjvf EABI-4.3.3_EmbedSky_20100610.tar.bz2
该文件解压后,就会在TQ这个目录中生成两个目录:opt,usr;
3. 添加环境变量 :
在/etc/profile中添加
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /opt/TQ/opt/EmbedSky/4.3.3/bin/
fi
添加完后 source /etc/profile 使他生效;
4. 在控制台执行以下命令:
cp /opt/TQ/opt/EmbedSky/4.3.3/bin /usr/local/arm
总结:第3步和第4步这两步少了一步就会出现以下错误:
arm-none-linux-gnueabi-gcc: error trying to exec 'cc1': execvp: No such file or directory
经验:若在解压时 用下面的命令:
tar xjvf EABI-4.3.3_EmbedSky_20100610.tar.bz2 -C/
就可以省去第四步
-C / :的意识是解压到指定目录,这里指根目录,由于该压缩包内部的目录结构本身包含usr/local/arm,所以解压到根目录实际上就是把文件解压到/usr/local/arm文件夹下。
‘肆’ 虚拟机ubuntu12.04怎么安装交叉编译器
1、下载文件: 安装包:arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz 下载地址 2、开始安装(建议大家新建一个文件夹),然后将文件复制到新建的文件夹中 输入命令:sudotarxvzfarm-linux-gcc-4.5.1-v6-vfp-20120301.tgz 安装完成后,输入ls命令,可以看到一个opt文件夹,如下图 3.修改环境变量,把交叉编译器的路径加入到PATH: 利用tab键的补齐功能进入该路径,如下图 输入pwd命令,查看当前路径的绝对路径 /home/cf/ARM/opt/FriendlyARM/toolschain/4.5.1/bin
‘伍’ 如何交叉编译开源库
所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。
交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。
那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。
工具/原料
电脑系统:win7系统。虚拟机系统:workstation6.5 。虚拟机安装的linux版本:fedora9.0。内核:linux2.6.25 。
方法/步骤
1
我使用的交叉编译工具链是arm-linux-gcc-4.4.3,把它放在linux系统的路径是图一
2
在linux系统的路径/home/song/share下放了交叉编译工具链arm-linux-gcc-4.4.3的压缩包,另一个版本的不用。有的人可能会问到怎么把这个压缩包弄到虚拟机的linux的系统的,我是通过samba服务从主机复制到虚拟机的,这里的share文件夹就是我samba服务器的工作目录,多了不说,这不是重点。
然后通过命令mkdir embedded 建立一个arm-linux-gcc的安装目录,如图二所示。当然安装路径和目录名称“embedded”可以依自己的喜好而定。
步骤阅读
然后通过命令将share文件夹下的arm-linux-gcc-4.4.3.tar.gz复制到这里的embedded文件夹下, 当然这里你也可以不进行这一步我这是为了方便以后管理,将arm-linux-gcc安装到embedded文件夹下,方便以后寻找。
然后使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将embedded文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下
执行完解压缩命令,就已经将交叉编译工具链arm-linux-gcc-4.4.3安装到linux系统上了,这里默认安装到了图六所示的路径上。
接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。 vi /etc/profile 编辑profile文件,添加环境变量。
在profile中的位置处,添加图八所示的红线标注的一行,路径就是图六中的红线标注的路径后面加上/4.4.3/bin。
图八中的路径一定是你自己的安装路径,可以使用pwd命令查找一下那个bin目录的路径。添加完路径后,保存退出。接下来使用命令:source /etc/profile,是修改后的profile文件生效,如图九所示。
然后,使用命令:arm-linux-gcc -v查看当前交叉编译链工具的版本信息,如图九中的红线标注第③行所示。很明显 可以看到,如果不执行第②步,则查看版本信息不成功。
然后验证交叉编译工具链是否安装成功并且可以使用,如图九所示,随便找一个目录编辑一个hello源代码。
编辑好hello.c文件后,保存退出。然后使用交叉编译器对hello.c进行编译,并生成可执行文件hello
这里生成的hello文件并不能像gcc编译出来的文件那样直接使用“./hello”命令执行并显示内容 因为它是一个二进制文件,只能下载到开发板上执行!
至此,搭建交叉编译环境步骤结束。
‘陆’ 交叉编译器的原理
编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。然而,也存在从低阶语言到高阶语言的编译器,这类编译器中用来从由高阶语言生成的低阶语言代码重新生成高阶语言代码的又被叫做反编译器。也有从一种高阶语言生成另一种高阶语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。
‘柒’ 虚拟机下Ubuntu10.04自带有gcc,还用装交叉编译工具吗
如果你想在ubuntu上编译其他平台如arm或powerpc之类的cpu的程序,或在64位系统编译32位程序,或32位系统编译64位程序,就必须要安装交叉编译,否则你装交叉编译有个叉用啊。
‘捌’ 虚拟机linux怎么查看交叉编译环境
1.安装源码编译环境(配置gcc),在ubuntu安装完成已经有gcc(gcc是由GNU之父Stallman所开发的linux下的编译器,全称为GNU Compiler Collection, 目前可以编译的语言包括:C, C++, Objective-C, Fortran, Java, and Ada.),但是gcc还不能编译文件,因为缺少一些头文件.那么我们就要来配置这些头文件。在这里我们需要安装build-essential这个软件包,安装了这个包会自动安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等一些必须的软件和头文件的库。安装build-essential,你可以在新立得搜索然后安装或者在终端里输入:
sudo apt-get install build-essential
2.除了编辑器之外,我们还需要文本编辑器来编写程序源码,Ubuntu中其实已自带编辑器,但是目前较为着名而且流行的vi / vim 编辑器可以通过在Ubuntu的软件中心下载,或是在终端输入指令下载,指令如下:
sudo apt-get install vim-full
3.解压包:arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2,(注:不同文件包类型,指令有区别,如bz2 -xf)如下指令:
sudo tar -xf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 OR sudo tar -xf arm-linux-gcc-3.4.6-glibc-2.3.6.tgz -C /work/
我的Ubuntu使用第二个指令解压后解压包放在了work目录下。
4.修改环境变量,把交叉编译器的路径加入到PATH:方法一:修改/etc/bash.bashrc文件(此文件只对当前用户适用),指令如下:
sudo gedit /etc/bash.bashrc
然后在文件的末尾空白处加入一下代码:
if [ -d /work/gcc-3.4.6-glibc-2.3.6 ] ; then
PATH=/work/gcc-3.4.6-glibc-2.3.6/arm-linux/bin:"${PATH}"
fi
即完成路径的添加。
5.使新的环境变量生效,不用重启电脑。输入下面指令:
source /etc/bash.bashrc
6.检查是否将路径加入到PATH。输入下面指令:
echo $PATH
若显示的内容中含有:/usr/local/arm/4.3.2/bin 说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
7. 测试是否安装成功,下面的命令会显示arm-linux-gcc信息和版本。
‘玖’ arm-linux-gnueabihf交叉编译工具链使用问题
与使用gcc或g++方法一样,只是把命令替换成arm-linux-gnueabihf-gcc或arm-linux-gnueabihf-g++
例如
arm-linux-gnueabihf-gcc -g -o helloworld main.c
写Makefile文件时也要注意命令的替换,举例
CC=arm-linux-gnueabihf-gcc
helloworld : main.c
$(CC) -g -o helloworld main.c
‘拾’ 虚拟机ubuntu14.04怎么安装交叉编译器
虚拟机ubuntu14.04怎么安装交叉编译器,解答如下
开始安装(建议大家新建一个文件夹),然后将文件复制到新建的文件夹中
输入命令:
sudo
tar
xvzf
arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
安装完成后,输入ls命令,可以看到一个opt文件夹,如下图
修改环境变量,把交叉编译器的路径加入到PATH:
利用tab键的补齐功能进入该路径,如下图
输入pwd命令,查看当前路径的绝对路径
/home/cf/ARM/opt/FriendlyARM/toolschain/4.5.1/bin