安装ARM交叉编译链:执行sudo apt-get install gcc-arm-linux-gnueabihf命令,执行安装软件包命令前最好先执行:sudo apt-get update命令来更新Ubuntu软件包库。 2、交叉编译器报错问题 使用如上编译器如果出现error: unrecognized -march target: armv5错误通常是因为 GCC 不支持-march=armv5选项,该选项指定生成代码运...
下载高版本源码安装包,安装前需要 CentOS 7.9 上已经安装低版本的 GCC,因为以源码的方式安装 GCC 编译器,即手动编译 GCC 编译器的源码,需要当前系统中存在一个可用的编译器。 GCC 下载地址:https://mirrors.aliyun.com/gnu/gcc/,这里下载 gcc-9.4.0.tar.gz 并复制到 ~/ 目录,具体安装过程如下: $ cd ~/...
在汇编阶段,gcc会进行两个操作:一、将汇编代码文件翻译成可被机器识别的代码(机器指令),新生成的文件叫 “目标文件”;二、每个文件都对应生成一个符号表,为链接阶段符号汇总做准备。 命令为gcc –c hello.s –o hello.o选项-c是让gcc在将汇编文件翻译成机器指令后立即停止, 以下为文件内容对比图: 左侧为新生...
gcc-c main.c utils.o:utils.c gcc-c utils.c 在这个例子中,main是目标文件,依赖于main.o和utils.o。生成main文件的命令是gcc -o main main.o utils.o。类似地,main.o依赖于main.c,utils.o依赖于utils.c。 6. 自动变量 Makefile 中有一些特殊的变量,称为自动变量,它们在规则的命令中使用,表示一些特...
这时候就发现直接执行了用gcc编译test.c文件。 也就是说,只要输入make指令,makefile文件中所有的内容都会被执行。 make/Makefile使用原理 makefile是为了构建项目的两个关系。依赖关系test.s的来源是从test.c而来,那么test.s就是依赖于test.c。 makefile文件中第一行 ...
在makefile中,依赖关系的表达方式有很多,.c.o : .c 只是其中一种简化写法。它不仅使得规则更加紧凑,也提高了makefile文件的可读性和可维护性。对于复杂的项目,使用这种简写方式可以大大减少规则的冗余,提高编译过程的效率。需要注意的是,.c.o : .c 这种简写方式只适用于源文件和目标文件一一对应...
gcc 不仅可以编译 C 语言,还可以编译其他语言。 在C 语言中生成可执行文件的过程如下: 编译(.c -> .o):由 cc1 完成。 链接(.o -> 可执行文件 a.out):由名为 ld 的链接器完成。 gcc 通过调用这些编译器和链接器来生成可执行文件。 输入gcc -v 可以确认 gcc 版本: ...
在“Linux基础知识(11)- GCC 简单使用(一)| GCC 安装配置和 Makefile 的基本用法” 里我们演示了 GCC 安装配置和 Makefile 的基本用法,本文将继续演示 Makefile 的高级用法。 1. 伪目标 前文我们在 Makefile 的基本用法的演示中,Makefile 编写的目标,在 make 看来其实都是目标文件,例如 make 在执行的时候...
gcc -c func2.c.PHONY : clean clean : rm *.o 这么编写是比较中规中矩的,如果考虑到Makefile的隐晦规则(潜规则),只需要前两行就行了,因为make会自动推导。 如果文件不是5个,而是50、500个或者更多,我们很显然不能这么干,这个时候就需要自动化变量了,我们可以使用这3个自动化变量先把上面的Makefile初步...