当前位置:首页 » 编程软件 » 交叉编译器不是必须包含的

交叉编译器不是必须包含的

发布时间: 2024-09-02 08:01:29

A. 用交叉编译器(已经更改为arm-linux-gcc) 编译内核;但是提示gcc没有找到

提示 gcc:not command;就表示是gcc命令没找到,这个和你的arm-linux-gcc没关系,因为如果arm-linux-gcc找不到的话,会提示arm-linux-gcc找不到的,所以你就只能猜是不是host边的gcc没找到,然后在你的主机端安装gcc开发包就可以了。

嵌入式一种重要的能力就是debug,自己锻炼下吧,以后这种简单的问题就能搞定了。

B. 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网上有许多产品团购,便宜有口碑

C. 交叉编译器的原理

编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。然而,也存在从低阶语言到高阶语言的编译器,这类编译器中用来从由高阶语言生成的低阶语言代码重新生成高阶语言代码的又被叫做反编译器。也有从一种高阶语言生成另一种高阶语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。

D. 开发工具,仿真器,烧录器,编译器,交叉编译器到底是什么关系

房东太多的此长啊,不拉。
开发工具,仿真器,燃烧器,编译器:开发工具仿真器,燃烧器和编译器。仿真器只能烧一些简单的IC,少数还行。燃烧器的程序员更强大的通配符量单一类型的刻录机其实很简单,就是你编译程序写入片内Flash内的介质燃烧器改造,我从事烧伤,我为自己代言

E. 交叉编译器工作原理

编译器的核心原理是将源代码,通常源自高级编程语言,转换成计算机或虚拟机可以直接执行的低级代码,即目标代码。然而,这种转换过程并非单向,也有反向的编译器,它们能将低级语言代码重新转换回高级语言代码,这种逆向的编译器被称为反编译器。此外,编译器还可以在不同层次间工作,将一种高级语言代码转换成另一种高级语言,或者生成中间代码,这种过程被称为级联编译。


标准的编译器输出包括一个包含入口点名称和地址的机器代码部分,以及对外部函数调用的处理,这些函数调用指向编译目标文件以外的函数。一组目标文件,即使它们来自不同的编译器,只要它们的输出格式一致,就可以链接在一起,形成一个最终的可执行程序,可以直接供用户运行。


(5)交叉编译器不是必须包含的扩展阅读

编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)

F. LINUX交叉编译工具链和GCC是什么关系啊

编译工具链一般最简化的为 binutils + gcc + glibc + kernel-header 组合的环境。
GCC 就是编译器,他的输出每次安装只能有针对一个架构的指令输出。如果要多个架构输出,那就要装多个 GCC ,所以编译工具链里面会有一个 GCC 。

交叉编译就是跨架构编译,编译出来的程序不能在本机执行(当然有例外情况)。所以这个时候就需要交叉编译工具链。
工具链光有 GCC 是不行的,还需要一个 binutils 的二进制连接器,以及一个最基本的目标架构的 C 库,C 库还需要一个目标架构的内核源代码才能完全工作(当然不是必须的,但编译有的时候需要)
又因为 GCC 、binutils 不能实现单软件同时多架构输出,所以需要单独另装,又加上 C 库和内核头文件需要目标架构的东西而不能用本机本地架构的数据。

所以一个交叉编译工具链就是针对目标架构准备的单独安装单独使用的 binutils + gcc + glibc + kernel-header 的集合了。

PS:这个 kernel-header 并不一定就是 Linux ,他还可以是别的系统核心开发库,比如 FreeBSD 。

G. 交叉编译几种常见的报错

交叉编译器是一种可以在平台A上为另一种平台B编译程序的编译器。其中,运行交叉编译器的平台A称为宿主机,交叉编译生成的目标文件的运行平台B称为目标机。交叉编译器的编译过程称为交叉编译。
一个完整的arm-linux交叉编译器包括arm-linux-gcc、glibc、binutils等组件。其中,arm-linux-gcc是为ARM平台编译C程序的编译器;glibc是嵌入式C程序所需的基本函数库;binutils包含一组二进制工具。所以交叉编译器又称为交叉编译工具链。
由于交叉编译器中每个组件都有各自的版本,所以可以使用不同版本的组件来制作交叉编译器。但是,组件之间会因版本不匹配的问题二产生错误。为了避免这种麻烦,建议直接使用制作好的arm-linux交叉编译器。

热点内容
安卓机关机如何设置快捷方式 发布:2024-11-25 04:16:02 浏览:635
安卓绿联和倍思哪个品牌好 发布:2024-11-25 03:54:45 浏览:889
androidpack 发布:2024-11-25 03:53:17 浏览:445
阿里云sql 发布:2024-11-25 03:53:15 浏览:714
服务器为什么一段时间就连不上 发布:2024-11-25 03:44:36 浏览:769
图片上下FTP是什么 发布:2024-11-25 03:43:18 浏览:759
微服务无状态存储管理 发布:2024-11-25 03:34:43 浏览:22
行上传 发布:2024-11-25 03:33:07 浏览:484
催款访问 发布:2024-11-25 03:33:06 浏览:999
dhcp服务器无法连接ip地址 发布:2024-11-25 03:23:09 浏览:950