gcc/g++,make/Makefile

发布时间:2026/5/20 10:19:31

gcc/g++,make/Makefile 编译器gcc/ggcc相关操作gcc后可以加-o xxx(需要建立的可执行程序) xxx(你的文件),后续就可以直接./xxx来运行该程序gcc 源文件 -o 文件名 或 gcc -o 文件名 源文件对于一个文件会先进行gcc -E对程序进行预处理生成code.i然后 gcc -S 编译完成就停下生成code.s然后 gcc -c 完成汇编生成code.o最后 gcc -o 将目标文件和标准库进行关联构建可执行程序eg.指令 ldd 可以查看当前文件需要连接哪些库编译器的发展动态链接和静态链接连接方式分为动态链接和静态链接要进行动态链接或静态链接必须要有对应的库动态链接就是在可执行程序里记录下当前代码中使用的函数在库中的地址处静态链接就是把我们要访问的方法(函数等)实现,拷贝到我们自己的可执行程序里动态库缺点一旦动态库缺失所有的程序都无法运行优点节省资源可执行程序体积小静态库缺点浪费资源可执行程序体积较大优点不依赖其他库库丢失也无所谓程序照样能运行gcc必须进行静态链接云服务器默认没有安装C/C的静态库因此需要使用sudo yum/apt install -y glibc -static ; sudo yum/apt install -y glibc -static来安装c/c的静态标准库Linux项目自动化构建工具-make/Makefile使用make是一条命令Makefile是一个文件可以先在当前目录建立makefile文件进入vim编写文件,往该文件里输入你需要执行的gcc指令注意 : 在Makefile里写的gcc指令要求以tab开头( : 的左边为目标文件,右边为依赖文件列表)后续就可以使用make命令来直接调用指令了使用后也需要对文件进行清理直接make不加后缀,默认执行makefile文件里的第一个目标名make加后缀目标名就可以指定其他的依赖关系和依赖方法.PHONY可以让目标文件总是被执行前面的%.o意思是要形成同名的xxx.o文件如果当前目录有 proc1.c, proc2.c, proc3.c$c的意思是将上面所有文件一个一个的交给gcc -c选项则%.c会执行gcc -c procN.c(N 1, 2, 3)makefile中可以定义变量,但是该变量没有类型$^对应的是 : 右边的所有内容(所有的依赖文件列表即$(src))$对应的是 : 左边的所有内容(目标文件即$(bin))当然,可以跳过.o的步骤直接跳到.c即直接用源文件形成目标文件在makefile中默认只形成一个可执行程序如果想要形成多个可执行程序可以使用.PHONY定义一个伪目标这样就可以一次形成多个可执行程序原理stat可以显示文件的属性eg.下面是这个操作的完整流程

相关新闻