linux插入模式命令行模式,底行模式,gcc和makefile指令
来源:互联网 发布:hadoop 数据挖掘 编辑:程序博客网 时间:2024/06/05 14:51
GCC:
1.
gcc hello.c -o hello
这是一步编译成hello这个可执行文件,其实有四个过程:预处理,编译,汇编,链接四个过程,最后才成可执行的文件;
常见的文件后缀:
.c c文件
.h .h文件
.i 预处理过的c文件
.o 编译后的目标文件
.s 汇编语言文件
#inclde< .h> 包含的.h头文件在标准库中;
#include " .h" 包含的.h 头文件在当前目录中;当前找不到会到标准库中去寻找
2. 预处理
#gcc -E hello.c -o hello.i
把#include <stdio.h>所包含的文件全部拉到了hello.i中;
3. 编译
#gcc -S hello.i -o hello.s ,生成了.s 汇编文件
4. 汇编
#gcc -c hello.s -o hello.o
对汇编文件进行汇编处理,生成目标.o文件
5. 链接
#gcc hello.o -o hello ;把hello.o目标文件和需要用到的库进行链接,生产一个可执行的文件hello
6. 生成可调式的代码-g
#gcc -g hello.c -o hello1; hello1是可以对运行过程进行调试l
7. -Wall 包含告警信息
#gcc -Wall hello.c -o hello ; 编译过程把告警信息打印出来
8. -w 不包含告警信息
#gcc -w hello.c -o hello
9. -I ./w1 寻找当前w1文件夹下的头文件
hello.c
#include "hello.h"
int main()
{
printf("hello\n");
return 0;
}
hello.h 在./w1下
#include <stdio.h>
编译时:
#gcc -I ./w1 hello.c -o hello
自动到w1中寻找hello.h
Makefile:
1.
目标:依赖文件
<tab> 可执行命令
2.
例1:
hello: hello.c
gcc hello.c -o hello
.PHONY:clean
clean:
rm -rf hello
例2:Makefile
hello: main.o func1.o func2.o func3.o
gcc main.o func1.o func2.o -o hello
main.o:main.c
gcc -c main.c
func1.o:func1.c
gcc -c func1.c
func2.o: func2.c
gcc -c fun2.c
func3.o:func3.c
gcc -c func3.c
clean:
rm -rf main.o func1.o func2.o func3.o
makefile1
#make -f makefile1
Makfile 可以修改如下:
obj=main.o func1.o func2.o func3.o
hello:$(obj)
gcc $(obj) -o hello
.......
4. 变量
$^:代表所有的依赖文件
$@: 代表目标
$<: 第一个依赖文件
例:
hello:main.o func1.o func2.o
gcc $^ -o $@
4. $(MAKE) -C subdir 改变makefile的路径的
top dir(根目录)下有源文件main.c、makefile(主)、文件夹sub1、文件夹sub2;子目录sub1里有源
文件sub1.c和makefile(次1);子目录sub2里有源文件sub2.c和makefile(次2)。
main.c里有主函数,需要调用sub1.c里的和sub2.c。
要求通过根目录下的makefile嵌套调用子目录下的makefile来编译,最后链接生成可执行文件edit。
makefile的编写
首先是子目录sub1下的makefile:
sub1.o : sub1.c
gcc-c sub1.c
接下来是子目录sub2下的makefile:
sub2.o : sub2.c
gcc -csub2.c
一条正常的编译命令,最后是根目录下的makefile:
VPATH=./sub1 ./sub2
obj=main.o sub1.o sub2.o
edit : $(obj)
gcc -o edit main.o ./sub1/sub1.o ./sub2/sub2.o
main.o : main.c
gcc -cmain.c
sub1.o : sub1.c
$(MAKE) -C ./sub1
sub2.o : sub2.c
$(MAKE) -C./sub2
.PHONY : clean
clean :
rm editmain.o -fr
rm./sub1/*.o -fr
rm./sub2/*.o -fr
附:根目录main函数下的makefile的内容
- linux插入模式命令行模式,底行模式,gcc和makefile指令
- linux图形模式和命令行模式切换
- Linux编程VIM编辑器底行模式和命令模式常用指令
- 命令行模式运行linux
- 命令行模式登录Linux
- Linux命令行模式和图形界面切换
- Linux:命令行模式返回XWindows模式
- Linux启动模式修改为命令行模式
- Ubuntu命令行模式和图形界面模式切换
- python交互模式和命令行模式
- vim 编辑模式和命令行模式
- Linux 命令行日文模式修改
- 命令行模式的Linux小结
- Linux命令行模式配置网卡
- linux 连接数据库 命令行模式
- 嵌入式Linux基础知识5(ubuntu16”命令行模式和图形界面切换“ “开机自动进入命令行模式设置”)
- vim插入模式和可视模式
- C语言基础(1.linux终端命令2.gcc过程3.命令行模式和输入模式切换4.命令行一些命令5.函数(三要素)6.基本的C语言代码结构)
- dcom配置
- CodeForces
- main函数与命令行参数
- 课堂展示
- Kafka+Spark Streaming+Redis实时计算整合实践
- linux插入模式命令行模式,底行模式,gcc和makefile指令
- 学生管理系统设计(数据库版)
- AI人才缺失催生的“跨境猎头”,人才年薪高达300万,猎头直赚100万
- pandas的中文资料还是实在太少了,自己整理一份吧
- 将视频与音频重复用(remux)成新的视频
- springboot使用Redis完整过程详解及常见问题总结
- 10个经济学概念,让你看清复杂世界
- 写了 15 年代码,总结出提升 10 倍效率的三件事
- 容器适配器(stack,queue,priority_queue)