首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析

【这个包GCC编译生成的库,前辈们为了方便大家开发,就把Glibc放到GCC】 举例描述下上面3个包是如何进行运作的。...gcc编译流程分为四个步骤:预处理、编译、汇编、链接。个人认为预处理和编译主要由gcc-core来完成,汇编和链接主要由Binutils来完成。那么何时用到glibc呢?...看到源码的printf函数没有,这个函数在GCC是以库函数的形式存在,这个库函数在glibc库,在stdio.h头文件中被声明。...幸运的是,GCC使得这一过程所面临的困难要比听起来小得多。 GCC的一般工具通常都是通过在命令行上调用命令(如gcc)来执行的。在使用交叉编译的情况下,这些工具将根据它编译的目标而命名。...例如,要使用交叉工具链为ARM机器编译简单的Hello World程序,你可以运行如下所示的命令: 使用如下命令编译并测试这个代码: $ arm-linux-gcc -o hello hello.c 五

6.5K10

linuxgcc使用方法_linux怎么用gcc编译

命令概述 gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。...-specs= 用 的内容覆盖内建的 specs 文件 -std= 指定输入源文件遵循的标准 –sysroot= 将 作为头文件和库文件的根目录 -B 将 添加到编译器的搜索路径 -v 显示编译器调用的程序...-### 与 -v 类似,但选项被引号括住,并且不执行命令 -E 仅作预处理,不进行编译、汇编和链接 -S 编译到汇编语言,不进行汇编和链接 -c 编译、汇编到目标代码,不进行链接 -o 输出到 -...4.3 仅作预处理,不进行编译、汇编和链接 [deng@localhost bak]$ gcc -E test.c -o test.i [deng@localhost bak]$ 将test.c预处理输出...bak]$ gcc test.o testfun.o -o test [deng@localhost bak]$ 到此这篇关于Linux gcc命令的具体使用的文章就介绍到这了,更多相关Linux gcc

6.6K20

Linux系统中使用GCC CPU参数优化代码编译

Linux系统中使用GCC CPU参数优化代码编译 使用特定的GCC参数可以使编译出的程序执行效率有较大提升。...2、注意事项 (1) 经过大量测试发现,在RedHat, CentOS系统通常只能通过参数传递的方法进行编译优化,当然,如果愿意并且能够修改程序的MakeFile也可以达到这一效果,只不过比较复杂,工...3、优化步骤: (1)确定系统CPU类型: # cat /proc/cpuinfo | grep "model name" 执行后会看到系统CPU的具体型号,记下CPU型号。...=sse:为指定指令集生成浮点运算特性(优化浮点运算功能); -mcpu:指定CPU型号; -march:指定CPU型号,基本同-mcpu,GCC根据-march设定的CPU型号决定在生成代码时可以使用哪些种类的指令...-march参数在某些CPU型号不可用!) -pipe:使用管道(pipe)方法替代临时文件方法在编译的不同阶段之间进行通讯。

2.3K10

linux命令行安装gcc_linux用yum安装gcc

下面由学习啦小编为大家整理了linux下安装gcc命令的方法,希望大家喜欢! linux下安装gcc命令 1 下载 在GCC网站上或者通过网上搜索可以查找到下载资源。...GCC建议编译后的文件不要放在源目录{srcdir](虽然这样做也可以),最好单独存放在另外一个目录,而且不能是 例如,可以这样建立一个叫 /usr/local/gcc-4.1.2的目标目录: %...同时,仍然能够使用旧版本的GCC编译器gcc、g++等命令。 (cool,我感觉棒极了!!...1) 7.2 库路径的设置 将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH,例如,如果GCC 4.1.2安装在/usr/local/gcc-4.1.2目录下,在RH Linux...local/gcc-4.0.1 [root@linux gcc-4.0.1]# make install (在目标目录下执行安装) 如果安装过程步骤和命令没有错误,你肯定能安装成功。

25.6K30

Linux编译工具:gcc入门

预处理实际上是将头文件、宏进行展开。编译阶段,gcc调用不同语言的编译器,例如c语言调用编译器ccl。gcc实际上是个工具链,在编译程序的过程调用不同的工具。汇编阶段,gcc调用汇编器进行汇编。...汇编器生成的是可重定位的目标文件,学过操作系统,我们知道,在源程序地址是从0开始的,这是一个相对地址,而程序真正在内存运行时的地址肯定不是从0开始的,而且在编写源代码的时候也不能知道程序的绝对地址,...所以重定位能够将源代码代码、变量等定位为内存具体地址。...对hello.c文件进行预处理,生成了hello.i 文件 gcc -S hello.i -o hello.s 对预处理文件进行编译,生成了汇编文件 gcc -c hello.s -o hello.o...使用库的优点在于: 模块化的开发 可重用性 可维护性 库又可以分为静态库与动态库: 静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件。程序运行的时候将不再需要静态库。

4.7K50

Linuxgcc的使用

a.预处理工作:展开头文件,去注释,宏替换和删除 gcc -E test.c -o test.i -E表示程序开始翻译,当执行完预处理就停下来 -o表示将预处理后形成的临时文件(名字任取) 在vim...gcc+文件名不加任何选项就是直接将源代码翻译成可执行程序,生成的可执行程序默认名称为a.out 外部定义的宏只在a.out中生效,并没有改变test.c文件 2.编译(生成汇编) gcc -...-c test.s -o test.o -c表示开始执行程序的翻译,当完成汇编过程就停下来 经过汇编以后,我所写的代码已经从自然语言转换成了二进制的机器语言,可以看到此时文件的内容我们不认识 在终端输入...从预处理到编译一直都是在翻译我写的代码,也就是说在链接之前,我的test.c文件只有printf等C标准库函数的调用,没有对应的实现。...动态链接库:前缀为lib,后缀为.so 静态链接库:前缀为lib,后缀为.a libc.so.6去掉前缀lib和后缀.so以及版本号.6,最后只剩下c,所以这个是C标准库 指定静态链接 当我不指定时Linux

2.9K00

Linux 编译安装 GCC 4.8

Linux 编译安装 GCC 4.8 详见: Linux 编译安装 GCC 4.8 GCC4.8发布啦,这个脚本在之前4.7的基础上做了点改进,移除一些过时的组件,增加了检测不到时自动下载源码包 PS:...4.8.1开始全面支持C++11特性,并且脱离了ppl库,gdb也开始脱离ppl库了 编译安装 GCC 4.8.X 在执行 install.sh 脚本前安装 ncurses-devel 和 python-devel..., 用于编译gdb和开启python功能 安装完成后,把[GCC源码目录]/libstdc++-v3/python 复制到[用户目录]/.gdb 编辑[用户目录]/.gdbinit,添加 编译安装gdb...GMP到5.1.3 2013-12-13 更新binutils到2.24,更新gdb到7.6.2,移除对ppl的依赖,显式开启gold等一些选项,显式开启链接时优化选项 2014-05-23 更新gcc...到4.8.3,更新gdb到7.7.1,完全移除对ppl的依赖,同步gcc4.9编译脚本修复的一些问题,增加编译选项等 2015-02-09 更新gcc到4.8.4(未测试,貌似这个版本加入了jit)

4.4K50

linuxgcc命令_Linux全套视频

gcc命令下各选项的含义 -E:仅作预处理,不进行编译、汇编和链接 -S:仅编译到汇编语言,不进行汇编和链接 -c:编译、汇编到目标代码(也就是计算机可识别的二进制) -o:执行命令后文件的命名 -g:...先创建一个Test.c文件 2.逐步编译 ①预处理: 此时我们发现目录已经出现了我们创建的Test.i文件,不妨cat进去看一下里面都有什么吧:...由此我们发现:gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果。...在此程序预处理结果就是将stdio.h 文件的内容插入到Test.c中了。...②编译: gcc的-S选项,表示在程序编译期间,将我们的代码编译成汇编语言。

3.5K20

Linux 编译安装 GCC 4.9

详情及变更请参照: Linux 编译安装 GCC 4.9 GCC4.9发布啦,本脚本在之前4.8的基础上做了稍许改进,更新 PS:4.9.0 开始支持C++1y特性 GCC 4.9 的大致变更如下,...因为我只用C/C++所以更关注通用性高的C和C++的部分啦: 标记过时系统 移除mudflag功能 在ARM架构引入内存错误检查器AddressSanitizer 增加运行时错误检测器UndefinedBehaviorSanitizer...版本 0.10, 0.11 或0.12 (可由GNU镜像列表 http://www.gnu.org/prep/ftp.html 或自动选择最佳镜像 http://ftpmirror.gnu.org gcc...目录的infrastructure目录下载 ) cloog 版本0.18.1(此处可下载 ftp://gcc.gnu.org/pub/gcc/infrastructure/ ) 我编译的环境...4.4.7 or gcc 4.4.5 or gcc 4.8.2 编译的依赖库: gmp 6.0.0a mpfr 3.1.2 mpc 1.0.2 isl 0.11.1 cloog 0.18.1

7.5K10

Linux 编译安装 GCC 4.8

Linux 编译安装 GCC 4.8 详见: Linux 编译安装 GCC 4.8 GCC4.8发布啦,这个脚本在之前4.7的基础上做了点改进,移除一些过时的组件,增加了检测不到时自动下载源码包 PS:...4.8.1开始全面支持C++11特性,并且脱离了ppl库,gdb也开始脱离ppl库了 编译安装 GCC 4.8.X 准备环境及依赖项 支持 ISO C++ 98 的编译器(GCC 4.7.2 的中期一个...下载 ) isl 版本 0.11.1 (可由GNU镜像列表 http://www.gnu.org/prep/ftp.html 或自动选择最佳镜像 http://ftpmirror.gnu.org gcc...目录的infrastructure目录下载 ) cloog 版本0.18.1(此处可下载 ftp://gcc.gnu.org/pub/gcc/infrastructure/ ) 我编译的环境...到4.8.3,更新gdb到7.7.1,完全移除对ppl的依赖,同步gcc4.9编译脚本修复的一些问题,增加编译选项等 2015-02-09 更新gcc到4.8.4(未测试,貌似这个版本加入了

6.9K20

GCC生成的汇编代码

一、查看GCC生成的汇编代码 在命令行上用“-S”选项,就能看到C编译器产生的汇编代码: #gcc -S code.c  注意:这里是大写的-S,如果用小写gcc会说找不到main函数 会在当前目录下生成...代码已经除去了所有关于局部变量名或数据类型的信息,但我们还是看到了一个对全局变量_accum的引用,这是因为编译器还不能确定这个变量会放在存储的哪个位置。...三、反汇编目标文件 在Linux系统,带 "-d" 命令行选项调用OBJDUMP可以完成这个任务: #objdump -d code.o ?...从这里可以看出函数sum的代码长度正好是19字节。 四、生成实际可执行的代码   这需要对一组目标文件运行链接器,而这一组目标代码文件必须包含有一个Main函数。...code.c反汇编产生的代码几乎完全一样。

1.9K10

第009课 gcc和arm-linux-gcc和Makefile

(1)预处理 C/C++源文件,以#开头的命令被称为预处理命令,如包含命令#include、宏定义命令#define、条件编译命令#if、#ifdef等。...预处理就是将要包含(include)的文件插入原文件、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些东西输出到一个.i文件中等待进一步处理。...(3)汇编 汇编就是将第二步输出的汇编代码翻译成符合一定格式的机器代码,在Linux系统上一般表现为ELF目标文件(OBJ文件)。反汇编是指将机器代码转换为汇编代码,这在调试程序时常常用到。...-S -o hello.s hello.i gcc -c -o hello.o hello.s gcc -o hello hello.o 上面一连串命令比较麻烦,gcc会对.c文件默认进行预处理操作...() { printf("This is C\n"); } 然后在main函数调用修改Makefile,修改后的代码如下: test: a.o b.o c.o gcc -o test

4.8K30
领券