交叉编译学习笔记(二)——交叉编译器的命名规则 在进行嵌入式开发过程中,用到的交叉编译器经常是这样的名称: arm-linux-gcc arm-none-linux-gnueabi-gcc arm-linux-gnu-gcc...上面对应的交叉编译器的前缀有arm-linux-, arm-none-linux-gnueabi-, arm-linux-gnu- 笔者很困惑,这些编译器同为ARM下的gcc编译器,不同的命名到底会导致这些编译器有哪些区别...,即系统架构,表明交叉编译器的目标系统平台架构,即用该交叉编译器编译出的程序是运行在哪种CPU上。...e500v2 另外,也有把vendor写成交叉编译器作者名字的。...比如用该交叉编译器编译一个U-boot或者其他小程序,是运行在无嵌入式Linux系统环境中单独运行的一个程序。
这篇文章来编译一个microPython的交叉编译器。 Python的脚本为了速度变快做了一次“编译”,对!就是这样,其实是编译过一次的。将脚本预编译为字节码。 作用是py文件到mpy文件。...打开以后,我们关注这三个文件夹 py文件夹是mpy的核心实现,编译器,运行时候的库,核心库 mpy-cross就是我们的交叉编译器 在端口这个文件夹里面,关注这些 运行Arm-MCU的最低标准
有些时候,我们用习惯了arm-linux-gcc作为编译ARM系统软件的工具,但并不知道其名称来源,慢慢地就会以为这样的工具天生就有的,直到有一天用到arm-linux-ranlib发现咦!...最近在做一个智能家居的项目,可是在移植CGIC库的时候,发现编译库的时候出现了找不到一些交叉编译工具命令: ?...显然系统说找不到arm-linux-ranlib编译命令,但是我的ubuntu已经成功移植了ARM交叉编译工具链,为什么说找不到的呢?该如何解决?...显然看到一堆交叉编译命令在这里,而且并没有看到arm-linux-ranlib这条命令,但是能够看到有arm-none-linux-gnueabi-ranlib这条命令,所以要进行软连接。...第三步:软连接,通过输入 #sudo ln -s arm-none-linux-gnueabi-ranlib arm-linux-ranlib 就可以链接处命令arm-linux-ranlib啦!
apt-get install gcc-arm-linux-gnueabihf 使用如下命令进行arm-linux-g++的安装: sudo apt-get install g++-arm-linux-gnueabihf... 如果要卸载时使用如下命令进行移除,arm-linux-gcc的卸载: sudo apt-get remove gcc-arm-linux-gnueabihf arm-linux-g++的卸载:...sudo apt-get remove g++-arm-linux-gnueabihf 方法二: arm-linux-gcc3.4.5 arm-linux-gcc4.3.2版本下载 链接:https...://pan.baidu.com/s/1f9m3ggdenuRQGb_NZ87bNA 提取码:krn5 安装64位的交叉编译工具,先根据上面提供的下载地址下载安装包:arm-linux-gcc-...命令如下: sudo cp -r gcc-3.4.5-glibc-2.3.6 /usr/local/arm 6.打开(/etc/profile)配置环境变量和库变量,目的是以后可以在任何位置使用该交叉编译器
另一方面,PC机的CPU架构是x86型的,ARM的CPU架构是ARM型的,所以这时候就需要用交叉编译器(此处即为ARM的编译器)编译程序代码,然后移植到ARM平台运行。所以这就是交叉编译的意义所在。...(1) 编译 输入对象:程序源码 输出目标:目标文件 工具:编译器 常见编译器:PC上的gcc,ARM上的arm-linux-gcc (2) 链接 输入对象:库文件(程序运行时依赖的库文件,或者是某个库所依赖的另外一个库文件...交叉工具链中最重要的工具还是编译器gcc,所以我们也经常把交叉工具链简称为交叉编译器,即严格意义上来讲,交叉编译器指的是交叉编译版本的gcc,但为了叫法上的方便,我们平常说的交叉编译,其实指的都是交叉工具链...例如常用的交叉编译器arm-linux-gcc,其实是一系列交叉编译版本的交叉工具链,其中包含了arm-linux-gcc, arm-linux-ld, arm-linux-as等工具。...例如在x86平台下交叉编译出了ARM平台上的程序,虽然两个平台用的都是Linux系统,但编译得到的程序只能在ARM平台下运行,x86平台下不可运行。
unsetunset从 Linux 交叉编译适用于 Windows 的静态库unsetunset 从 Linux 交叉编译 Windows 的静态库是一个相当简单的过程。...步骤如下: 步骤 1 - 安装所需的交叉编译器 第一步是安装交叉编译器,这样我们就可以在 Linux 机器上编译适用于 Windows 的代码。...Linux 有几种可用的交叉编译器,例如 MinGW、Cygwin 和 Mingw-w64。 在本文中,我们将使用 Mingw-w64 交叉编译器。...; } 第 3 步- 编译静态库 下一步是使用交叉编译器编译静态库。...这可以包括记录使用的交叉编译器、用于编译静态库的命令以及任何特定于平台的注意事项。 总体而言,从 Linux 交叉编译静态库到 Windows 是开发人员必备的一项技能。
, 三者所用的 编译器 是不同的 ; 头文件 : 特定交叉编译工具链 自带的 目标系统的 头文件 ; 依赖库 : 特定交叉编译工具链 自带的 目标系统的 依赖库文件 , 需要与头文件匹配 ; 在交叉编译中...4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc , 这是 Google 提供的 Android NDK 中附带的 交叉编译工具 , 编译器名称...arm-linux-androideabi-gcc 说明 该编译器 只能在 Linux 系统中编译 arm 架构的 android 平台的 可执行程序 或者 函数库 ; 头文件 : android-ndk-r17c...=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 # gcc 编译器参数 FLAGS="-isysroot $...: 32 位 x86 架构 ; x86_64 / amd64 : 64 位 x86 架构 ; arm : 32 位 ARM 架构 ; arm64 : 64 位 ARM 架构 ; ppc : PowerPC
头文件的展开 此时生成test.i,我们用vim进入test.i,在利用底行模式vs test.c: 同时,在预处理阶段完成了宏替换、去注释以及条件编译: 条件编译的生效(宏的命令行定义) 可以向编译器传参来保证宏在命令行中定义...**这个库的位置: Linux下默认形成可执行程序,默认使用的是动态库 /lib64/libc-2.17.so静态库 生成静态链接 生成可执行程序后面要加上-static 但是我们仔细看一下体积的差距太大了
今日更新了Linux的编译器gcc、g++的内容 欢迎大家关注点赞收藏⭐️留言 编译器-gcc/g++ 我们直接用自带的gcc编译器会编译不了,因为当前版本太低了,有些语法不支持。...3种常见c++后缀 .cc和.cpp都是指c++,需要用g++编译器,如果用gcc编译器就会报错。如果想支持更高的语法特性,可以加上 -std=c++11 的选项。g++也可以编译c语言程序。...-O0 -O1 -O2 -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高 -w 不生成任何警告信息。 -Wall 生成所有警告信息。
前言 gcc/g++是Linux中的编译器,vim是Linux中的编辑器。要想将代码运行起来还需要编译才可实现。 本篇文章,主要通过预处理、编译、汇编、链接来介绍gcc/g++。...Linux系统下,gcc/g++头文件默认路径: /usr/include/,去查看它即可 条件编译 有一个很深刻的印象,在下载安装pycharm时,需要选择安装社区版还是专业版。...编译 在VS中,编译器会检查语法是否有错误,如果没有错误,才会编译成汇编语言。Linux下的gcc/g++也是一样。...-O0 -O1 -O2 -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高 -w 不生成任何警告信息。 -Wall 生成所有警告信息。
gcc test.c -E -o test.i /usr/include/stdio.h //linux下的头文件路径 C:\Program Files\Microsoft Visual Studio\...2022\Community\SDK\ScopeCppSDK\vc15\SDK\include\ucrt\stdio.h //我的windows下的头文件路径 预处理之后的文件中多出来的一大堆代码其实是从linux...劣势:形成的可执行程序体积太大,网络、磁盘、内存的资源占用量大, 2.动态链接 通过编译器内部的链接器,来链接标准函数库,值得注意的是,动态链接的时期是在程序运行的时候,如果程序需要链接,链接器就会链接标准函数库...windows下动态库后缀为.dll静态库后缀为.lib 在安装vs2022时,我们安装的不仅仅是编译器本身,还要安装标准库的.h文件,以及标准动静态库等 5.Linux的大部分命令就是用C语言写的...大家需要有这个认识,Linux中大部分指令都是用C语言写的。
在C++中,交叉编译通常用于在开发机器上编译目标平台的程序,例如在使用x86架构的开发机器上编译ARM架构的程序。...交叉编译的原理包括以下几个关键步骤: 选择交叉编译工具链: 首先需要选择目标平台的交叉编译工具链,包括交叉编译器、链接器和标准库等。...配置环境: 在进行交叉编译之前,需要配置开发环境,以确保编译器和链接器能够正确识别目标平台的架构和操作系统。这可能涉及设置环境变量、配置编译器选项等。...编译源代码: 使用交叉编译工具链编译源代码。在编译过程中,编译器会根据目标平台的架构和操作系统生成相应的机器码。...以下是一些常见的可用值: 386:Intel x86 32 位架构。 amd64:Intel x86 64 位架构(也称为 x86-64 或者 AMD64)。 arm:ARM 32 位架构。
前言 在之前已经分享了 【Linux】vim的使用,这次来看看在云服务器上的编译器gcc。 2....这个是因为编译器版本的问题: 查看编译器的版本:gcc -v 版本不是最新的,不支持在for里面定义变量。...mv test.cxx test.txt 这里是不行的,Linux是不关心文件后缀的,但是编译器是关系。这里编译器就是把.txt当成文本文件了。...在Linux里面有,同样在windows里面也有。 在在Linux中库的真正的名字是把前缀lib去掉,去掉“.”后面的后缀。 所以这个就是c标准库。...因为Linux存在这两种库,就决定了,在链接时,有两种方式:动态链接和静态链接。
因为不同目标机的指令集是不一样的,比如arm跟x86就不一样】 2. gcc-core:顾明之意是GCC的核心部分,这部分是只包含c的编译器及公共部分,而对其他语言【C++、Ada等】的支持包需要另外安装...不过网上的《Linux彻底定制指南》讲得非常详细,感兴趣的可以看一看。 四、交叉编译: 交叉编译(或交叉建立)是这样一种过程,它在一种机器结构下编译的软件将在另一种完全不同的机器结构下执行。...、arm-linux-gcc: arm-linux-gcc是基于ARM目标机的交叉编译软件,前面几年安装arm-linux-gcc交叉编译软件对与一个初级嵌入式工程师来说特别棘手,因为它需要安装多个软件包...包也不一样;glibc一个c库,最终是以库的形式存在于编译器中,自然ARM所使用的glibc库跟X86同样也是不一样的咯,其它的依此类推。...六、arm-linux-gcc和arm-elf-gcc: arm-elf-gcc跟arm-linux-gcc一样,也是是基于ARM目标机的交叉编译软件。
gcc mycode.c -0 mytest,后,./mytest就可以编译了,相当于把a.out重命名了
我们还可以通过给编译器传递不同的宏值来进行代码的动态裁剪。
这里选择LuaJit在嵌入式Linux系统使用,LuaJit交叉编译也比较简单,没有第三方库的依赖,直接交叉编译源码即可。...: tar xvzf LuaJit-2.0.5.tar.gz 上面那个博客中有详细的安装编译说明,这里主要引用了其ARM交叉编译的部分: 基于 GNU Makefile 的构建系统允许在任何主机上为任何受支持的目标进行交叉编译...例如,如果您在 Windows 或 macOS 主机上为嵌入式 Linux 或 Android 进行编译,则需要将TARGET_SYS=Linux添加到下面的示例中。...> 然后我们在编译个json的扩展库,json在实际开发中用的比较多,这里可以下载一个lua-cjson库进行交叉编译一下,源文件也在上面的码云链接里下载。...解压编译,cjson编译也比较简单,只需要改下编译器,修改一下lua头文件的路径,头文件路径即刚才安装LuaJit时的目录里的include。
楼主今天终于把所有Linux开发环境需要的软件下载完毕了。虽然以前也是搭建过的,时间久了又折腾了一晚上。...交叉环境: Windows、Linux文件共享 SecureCRT 连接虚拟机终端 工具: VirtualBox ubuntu-16.04-desktop-amd64.iso(ubuntu官网下载) SecureCRT...三个IP网段相同 检查Windows和Linux是否相互ping通 ?...文件共享: Linux执行atp-get samba下载samba服务 选择Linux的home文件夹右键properties,配置文件夹共享 Windows映射网络驱动器\\192.168.8.197...完成交叉环境搭建后,就可以轻松的在Window下进行代码开发和编译了。同时也可以用SecureCRT 操作Linux,不必进行文件传输,切虚拟机终端这种繁琐的操作了。
编译环境 Ubuntu 16.04 x86_64 arm-xm-linux.tar.gz 下载openssl源码 $ wget https://www.openssl.org/source/openssl.../Configure linux-generic32 \ no-shared \ no-asm \ no-async \ --prefix=/your/install/path/xm/openssl..._1.1.0d \ --cross-compile-prefix=arm-xm-linux- linux-generic32 指定目标平台类型, no-shared 生成静态库,如果要生成动态库...,则使用-shared选项 no-asm 在交叉编译过程中不使用汇编代码代码加速编译过程 –prefix 指定安装目录 –cross-compile-prefix 指定交叉编译器名字前缀...no-async arm-xm-linux的machine定义为arm-xm-linux-ulibcgnueabi,没有提供GNU C的ucontext库所以需要添加此选项,否则编译会报错
这种方式下,我们使用 x86 平台上的工具,开发针对 x86 平台本身的可执行程序,这个编译过程称为本地编译。...交叉编译: 交叉编译可以理解为,在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序: 比如,我们在 x86 平台上,编写程序并编译成能运行在 ARM...平台的程序,编译得到的程序在 x86 平台上是不能运行的,必须放到 ARM 平台上才能运行。...仅用目标编译器替换主机编译器就会破坏需要构建在构建本身中运行的事物的软件包。...注意: 严格意义上来说,交叉编译器,只是指交叉编译的gcc,但是实际上为了方便,我们常说的交叉编译器就是交叉工具链。本文对这两个概念不加以区分,都是指编译链。
领取专属 10元无门槛券
手把手带您无忧上云