1.【文】鲲鹏916-ARM64架构源码gcc编译完整记录
2.å¦ä½å®è£
arm-linux-gcc
3.安装了 arm linux gcc 交叉编译环境后不能实现make功能
4.基于GCC的源码ARM开发环境搭建
5.å¦ä½å¶ä½arm-linux-gccç¼è¯å·¥å
·
6.嵌入式Linux开发工具arm-linux-gcc安装及使用
【文】鲲鹏916-ARM64架构源码gcc编译完整记录
以下是关于ARM架构源码gcc编译的详细步骤记录: 首先,确保已经准备就绪,源码如果cmake未安装,源码需要进行安装。源码检查cmake版本以确认其是源码否满足需求。 安装必要的源码沙盘指标源码依赖包,如isl、源码gmp、源码mpc、源码mpfr等,源码检查它们是源码否已成功安装。 针对gcc版本过低的源码getvideo 源码问题,需下载并更新到7.3版本。源码下载并解压gcc7.3的源码安装包。 在gcc-7.3.0目录下,源码确认已下载和安装了所有依赖包。 利用多核CPU的优势,通过“-j”参数加速编译过程。原先是按照官方文档使用make -j,但速度缓慢,后来调整为make -j以提升效率。 依次执行编译目录创建、gcc编译、gs 源码安装以及确认“libstdc++.so”软连接在正确的目录(/usr/lib)。 编译完成后,通过查看gcc版本来确认安装是否成功。 以上就是完整的gcc编译安装流程。如果您觉得这些信息对您有所帮助,欢迎分享和关注我们的更新。更多技术内容敬请期待,感谢您的支持!å¦ä½å®è£ arm-linux-gcc
arm-linux-gccæ¯åºäºarmæ¶æçlinuxå¹³å°äº¤åç¼è¯å·¥å ·ãå¨å®è£ æ¶ä¸»è¦æ以ä¸å æ¥ï¼æ常è§çé¦å è¦ä¸è½½arm-linux-gccå®è£ å ï¼æè ä¹å¯ä»¥ä»ç½ä¸ä¸è½½arm-linux-gccçæºç ã
è¿å ¥Linuxï¼å°å½åç®å½è®¾ä¸ºarm-linux-gccçä¸è½½ç®å½ï¼å¹¶ä¸è¾å ¥tar -xzf arm-linux-gcc-4.4.3.tar.gz,åæ¶å°æ件解åï¼è§£ååä¼æä¸ä¸ªoptçæ件夹ãå¦ä¸å¾æ示ï¼
å¨/usr/local/ä¸å»ºç«ä¸ä¸ªå为armçæ件夹ï¼åæ¶å¨ç»ç«¯ä¸è¾å ¥å½ä»¤ï¼cd /usr/local/ï¼å¹¶ä¸ç¹å»å车é®ï¼å次è¾å ¥å½ä»¤ï¼mkdir armï¼å»ºç«armç®å½ï¼å¹¶ä¿®æ¹è¯¥æ件夹çå±æ§ä¸ºrwxï¼æåè¾å ¥å½ä»¤ï¼chmod armï¼å¦ä¸å¾ï¼
å¨Linuxç»ç«¯ä¸è¾å ¥å½ä»¤ï¼sudo cp -r /opt/FriendlyARM/toolschain/4.4.3 /usr/local/armï¼åæ¶å°ä¹å解åå¾å°çoptæ件åä¸çæºç ï¼å¤å¶å°ä¸ä¸æ¥ä¸å建çarmæ件夹ä¸
å°è¿éå·²ç»åºæ¬å®è£ å®æä½æ¯è¿è¦æ³¨æ以ä¸äºé¡¹ï¼
为äºé¿å æ¯æ¬¡ä½¿ç¨arm-linux-gccæ¶é½è¦è¾å ¥å®æå¨çå®æ´è·¯å¾ï¼æ以è¦ä¿®æ¹ä¸ä¸ç¯å¢åé$PATHãé常éè¦å¨ç»ç«¯ä¸è¾å ¥:sudo gedit /etc/profileï¼æå¼profileæ件ï¼å¨æåä¸è¡å ä¸âexport PATHï¼$PATH:/usr/local/arm/4.4.3/binâç¶åä¿åæ件ãå¦å¾æ示ï¼
为äºä½¿æ°çç¯å¢åéçæéè¦è¾å ¥ï¼source /etc/profileãç¶ååè¾å ¥ï¼echo $PATHæ¥çç¯å¢åéï¼å¦å¾ï¼
æåè¾å ¥arm-linux-gcc -væ¥ççæ¬ä¿¡æ¯ï¼å¦æåºç°ä¸å¾ä¸çæ¬ä¿¡æ¯å表示å®è£ æåã
安装了 arm linux gcc 交叉编译环境后不能实现make功能
1. 脚本首先尝试查找 `trafshow` 命令的绝对路径。
2. 如果 `trafshow` 未安装,导致路径变量 `Cmd` 为空值,frp 源码脚本会返回关于命令未找到的提示信息。
3. 这种做法的目的是在 Bash 脚本中确保能够使用 `command-not-found` 特性。
4. 换句话说,在 Bash 脚本中直接使用未安装的命令时,通常不会自动显示命令未找到的提示。
基于GCC的ARM开发环境搭建
搭建基于GCC的ARM开发环境,实现嵌入式开发,可替代Keil/MDK工具,过程如下:
所需工具包括:Windows , 位系统,`GNU Arm Embedded Toolchain`,`Ninja`,源码架构`GNU Make`,`CMake`。
详细步骤如下:
1. **安装GCC**:下载并安装`gcc-arm-none-eabi-.3-.-win.exe`,保持默认安装路径。
2. **安装Ninja**:下载Ninja压缩包,解压后添加可执行文件到系统环境变量。
3. **安装Make**:通过`make-4.4.tar.gz`源码包安装,若无VS工具,需先安装VS并执行`build_w.bat`脚本,将`make.exe`路径添加到环境变量。
4. **安装CMake**:直接下载最新版安装。
5. **编写测试代码**:创建`main.c`文件,填充主函数;编写`CMakeLists.txt`文件,初始化配置;添加链接脚本文件。
6. **验证编译**:执行`cmake`命令启动编译,生成`.elf`和`.map`文件。若出现`Reset_Handler`未定义警告,拷贝启动文件至工程目录,编译。
7. **优化自动查找编译器**:使用CMake内置`find_program`函数自动搜索应用程序,简化配置。
8. **编写辅助脚本**:创建脚本自动化执行CMake和编译流程。
9. **生成可烧录固件**:在`CMakeLists.txt`文件中添加固件生成代码。
至此,基于GCC的ARM开发环境搭建完成,后续涉及的CMake文件编写、文件夹结构组织与软件架构搭建等细节需自行规划。
å¦ä½å¶ä½arm-linux-gccç¼è¯å·¥å ·
ä¸ãä¸è½½æºæ件
æºä»£ç æ件åå ¶çæ¬ï¼
binutils-2..tar.bz2, gcc-core-4.4.4.tar.bz2 gcc-g++-4.4.4.tar.bz2 Glibc-2.7.tar.bz2 Glibc-ports-2.7.tar.bz2 Gmp-4.2.tar.bz2 mpfr-2.4.0.tar.bz2mpc-1.0.1.tar.gz Linux-2.6..tar.bz2 ï¼ç±äºæå¨ç¼è¯åºéçè¿ç¨ä¸ï¼æ ¹æ®åºéçä¿¡æ¯ä¿®æ¹äºç¸å ³çC代ç ï¼æ è没æä¸è½½ç¸åºçè¡¥ä¸ï¼
ä¸è¬ä¸ä¸ªå®æ´ç交åç¼è¯å¨æ¶åå°å¤ä¸ªè½¯ä»¶ï¼ä¸»è¦å æ¬bilingualsãccãglibcçãå ¶ä¸ï¼binutils主è¦çæä¸äºè¾ å©å·¥å ·ï¼gccæ¯ç¨æ¥çæ交åç¼è¯å¨ï¼ä¸»è¦çæarm-linux-gcc交åç¼è¯å·¥å ·ï¼èglibc主è¦æä¾ç¨æ·ç¨åºæéè¦çä¸äºåºæ¬å½æ°åºã
äºã建ç«å·¥ä½ç®å½
ç¼è¯æç¨ä¸»æºåå· fc.iï¼èææºéçæ¯VM7.0ï¼Linuxåè¡çéçæ¯Fedora9,
第ä¸æ¬¡ç¼è¯æ¶ç¨çæ¯rootç¨æ·ï¼ç¬¬äºæ¬¡ç¨ä¸è¬ç¨æ·yyzï¼, ææçå·¥ä½ç®å½é½å¨/home/yyz/crossä¸é¢å»ºç«å®æï¼é¦å å¨/home/yyzç®å½ä¸å»ºç«crossç®å½ï¼ç¶åè¿å ¥å·¥ä½ç®å½ï¼æ¥çå½åç®å½ãå½ä»¤å¦ä¸ï¼
åå»ºå·¥å ·é¾æ件夹ï¼
[root@localhost cross]# mkdir embedded-toolchains
ä¸é¢å¨æ¤æ件夹ä¸å»ºç«å¦ä¸å 个ç®å½ï¼
setup-dirï¼åæ¾ä¸è½½çå缩å ï¼
src-dirï¼åæ¾binutilsãgccãglibc解åä¹åçæºæ件ï¼
Kernelï¼åæ¾å æ ¸æ件ï¼å¯¹å æ ¸çé ç½®åç¼è¯å·¥ä½ä¹å¨æ¤å®æï¼
build-dir ï¼ç¼è¯src-dirä¸é¢çæºæ件ï¼è¿æ¯GNUæ¨èçæºæ件ç®å½ä¸ç¼è¯ç®å½å离çåæ³ï¼
tool-chainï¼äº¤åç¼è¯å·¥å ·é¾çå®è£ ä½ï¼
programï¼åæ¾ç¼åç¨åºï¼
doc:说æææ¡£åèæ¬æ件ï¼
ä¸é¢å»ºç«ç®å½ï¼å¹¶æ·è´æºæ件ã
[root@localhost cross] #cd embedded- toolchains
[root@localhost embedded- toolchains] #mkdir setup-dir src-dir kernel build-dir tool-chain program doc
[root@localhost embedded- toolchains] #ls
build-dir doc kernel program setup-dir src-dir tool-chain
[root@localhost embedded- toolchains] #cd setup-dir
æ·è´æºæ件ï¼
è¿éæ们éç¨ç´æ¥æ·è´æºæ件çæ¹æ³ï¼é¦å åºè¯¥ä¿®æ¹setup-dirçæé
[root@localhost embedded- toolchains] #chmod setup-dir
ç¶åç´æ¥æ·è´/home/yyzç®å½ä¸çæºæ件å°setup-dirç®å½ä¸ï¼å¦ä¸å¾ï¼
建ç«ç¼è¯ç®å½ï¼
[root@localhost setup-dir] #cd ../build-dir
[root@localhost build -dir] #mkdir build-binutils build-gcc build-glibc
ä¸ãè¾åºç¯å¢åé
è¾åºå¦ä¸çç¯å¢åéæ¹ä¾¿æ们ç¼è¯ã
为ç®åæä½è¿ç¨ãä¸é¢å°±å»ºç«shellå½ä»¤èæ¬environment-variablesï¼
[root@localhost build -dir] #cd ../doc
[root@localhost doc] #mkdir scripts
[root@localhost doc] #cd scripts
ç¨ç¼è¾å¨viç¼è¾ç¯å¢åéèæ¬envionment-variablesï¼[root@localhost scripts]
#vi envionment-variables
export PRJROOT=/home/yyz/cross/embedded-toolchains
export TARGET=arm-linux
export PREFIX=$PRJROOT/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH
æªå¾å¦ä¸ï¼
æ§è¡å¦ä¸è¯å¥ä½¿ç¯å¢åéçæï¼
[root@localhost scripts]# source ./environment-variables
åã建ç«äºè¿å¶å·¥å ·ï¼binutilsï¼
ä¸é¢å°åæ¥ä»ç»å®è£ binutils-2..1çè¿ç¨ã
[root@localhost script] # cd $PRJROOT/src-dir
[root@localhost src-dir] # tar jxvf ../setup-dir/binutils-2..1.tar.bz2
[root@localhost src-dir] # cd $PRJROOT/build-dir/build-binutils
å建Makefileï¼
[root@localhost build-binutils] #../../src-dir/binutils-2..1/configure --target=$TARGET --prefix=$PREFIX
å¨build-binutilsç®å½ä¸é¢çæMakefileæ件ï¼ç¶åæ§è¡makeï¼make install,æ¤è¿ç¨æ¯è¾ç¼æ ¢ï¼å¤§çº¦éè¦ä¸ä¸ªåéå·¦å³ãå®æåå¯ä»¥å¨$PREFIX/binä¸é¢çå°æ们çæ°çbinutilã
è¾å ¥å¦ä¸å½ä»¤
[root@localhost build-binutils]#ls $PREFIX/bin
嵌入式Linux开发工具arm-linux-gcc安装及使用
嵌入式开发工具:arm-linux-gcc安装与使用指南
嵌入式开发涉及程序在特定硬件(如ARM微处理器)上运行的编译和调试,需要特殊的交叉编译器如arm-linux-gcc。这种工具允许在非目标平台上(如Windows开发机)生成适用于ARM/Linux系统的代码。 编译器分为两类:arm-none-eabi-gcc,用于编译裸机系统,不依赖于Linux。
arm-none-linux-gnueabi-gcc,针对Linux系统,利用GCC和Glibc库,如Codesourcery的优化版本。
安装步骤涉及下载编译器包,通常从Linaro官网获取,或者直接使用提供的链接。解压后,将gcc-4.6.4目录添加到环境变量和库路径中,通过编辑环境配置文件实现全局可用。 使用arm-linux-gcc编译时,遵循预处理、编译、汇编和链接的步骤,通过参数选项控制过程。例如,-E用于预处理,-S生成汇编文件,-c只编译不链接,-o指定目标文件名,-I和-I的区别,-l用于指定库,-L用于指定库搜索路径。 优化选项如-O0、-O1至-O3提供了不同程度的效率与大小之间的平衡。此外,-g选项在编译时包含调试信息。 课后作业中,涉及看门狗模块的硬件功能和编译命令,例如将fun.c编译成目标文件和链接库函数。