共2条
1/1 1 跳转至页
gcc 嵌入式C语言应用程序开发工具-gcc使用指南
问
嵌入式开发工具通常包括文本编辑工具,gcc编译器,MakeFile文件,gdb调式工具.
gcc是在Linux下运行的自由软件,本身是编译器,也可以用作交叉编译工具。所以说gcc是完整的交叉C编译器。
gcc的主要部件包括以下部件:
C交叉编译器gcc
交叉汇编工具as
反汇编工具objdump
连接工具ld
调试工具GDB
gcc最基本的用法是∶gcc [options] [filenames]
程序编译的四个过程:预处理、编译、汇编、连接
基本参数说明:
-E:只进行预处理
-S:只进行编译;产生汇编代码
-c:只编译、汇编,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件
-o output_filename:确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out
-v:打印程序的编译过程,以及编译器的版本
-g:产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,必须加入这个选项
-o:对程序进行优化编译、连接
-o2:比-o更好的优化
-Idirname:将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶
A)#include <>
B)#include “myinc.h”
其中,A类使用尖括号(< >),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而对于B类,cpp在当前目录中搜寻头文件,这个选项的作用是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。在程序设计中,如果我们需要的这种包含文件分别分布在不同的目录中,就需要逐个使用-I选项给出搜索路径
-Ldir:将dir所指出的目录加入到程序函数档案库文件的目录列表中,是在连接过程中使用的参数。在预设状态下,连接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的档案库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后到系统预设路径中寻找,如果函数库存放在多个目录下,就需要依次使用这个选项,给出相应的存放目录
-lname:在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为“libm.a”的数学函数库
-nostdlib:不使用系统默认的startup file和系统函数库,仅使用自己定义的库进行连结,某些特定的平台可能需要系统默认的库libgcc.a避免一些系统错误;因此当使用此命令是一般需要将libgcc.a库另外指定进行连接。
ld(link description)文件:ld文件是指出连接时内存映象格式的文件
大部分情况下各种参数混合使用时的顺序不会有什么影响,但是当同一个参数连续使用时将产生不同的效应,例如:-L命令,不同的顺序则编译起搜索的顺序不同
答 1: 要支持啊大家要是觉得 有用就回帖支持一下 答 2: 頂一下望再出好帖 答 3: 支持!RT! 答 4: 会努力的 大家关注会努力的 大家关注
答 5: http://www.bluemcu.com/http://www.bluemcu.com/
上面有的新文章 大家看看
多提意见 答 6: 支持! 答 7: 不错啊 答 8: http://www.bluemcu.com/http://www.bluemcu.com/
答 9: 自己顶自己顶 答 10: haha
gcc是在Linux下运行的自由软件,本身是编译器,也可以用作交叉编译工具。所以说gcc是完整的交叉C编译器。
gcc的主要部件包括以下部件:
C交叉编译器gcc
交叉汇编工具as
反汇编工具objdump
连接工具ld
调试工具GDB
gcc最基本的用法是∶gcc [options] [filenames]
程序编译的四个过程:预处理、编译、汇编、连接
基本参数说明:
-E:只进行预处理
-S:只进行编译;产生汇编代码
-c:只编译、汇编,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件
-o output_filename:确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out
-v:打印程序的编译过程,以及编译器的版本
-g:产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,必须加入这个选项
-o:对程序进行优化编译、连接
-o2:比-o更好的优化
-Idirname:将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶
A)#include <>
B)#include “myinc.h”
其中,A类使用尖括号(< >),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而对于B类,cpp在当前目录中搜寻头文件,这个选项的作用是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。在程序设计中,如果我们需要的这种包含文件分别分布在不同的目录中,就需要逐个使用-I选项给出搜索路径
-Ldir:将dir所指出的目录加入到程序函数档案库文件的目录列表中,是在连接过程中使用的参数。在预设状态下,连接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的档案库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后到系统预设路径中寻找,如果函数库存放在多个目录下,就需要依次使用这个选项,给出相应的存放目录
-lname:在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为“libm.a”的数学函数库
-nostdlib:不使用系统默认的startup file和系统函数库,仅使用自己定义的库进行连结,某些特定的平台可能需要系统默认的库libgcc.a避免一些系统错误;因此当使用此命令是一般需要将libgcc.a库另外指定进行连接。
ld(link description)文件:ld文件是指出连接时内存映象格式的文件
大部分情况下各种参数混合使用时的顺序不会有什么影响,但是当同一个参数连续使用时将产生不同的效应,例如:-L命令,不同的顺序则编译起搜索的顺序不同
答 1: 要支持啊大家要是觉得 有用就回帖支持一下 答 2: 頂一下望再出好帖 答 3: 支持!RT! 答 4: 会努力的 大家关注会努力的 大家关注
答 5: http://www.bluemcu.com/http://www.bluemcu.com/
上面有的新文章 大家看看
多提意见 答 6: 支持! 答 7: 不错啊 答 8: http://www.bluemcu.com/http://www.bluemcu.com/
答 9: 自己顶自己顶 答 10: haha
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |