首页 > 其他分享 >GCC编译器

GCC编译器

时间:2023-09-05 22:57:33浏览次数:38  
标签:GCC libsub gcc 链接 编译器 test main hello

(1)预处理(preprocessing)、编译(compilation)、汇编(assembly)和链接(linking)
	gcc -E -o hello.i hello.c			//预处理(preprocessing)
	gcc -S -o hello.s hello.i			//编译(compilation)
	gcc -c -o hello.o hello.s			//汇编(assembly)
	gcc -o hello hello.o				//链接(linking)

(2)编译器调试
	gcc -o hello hello.c -v				//查看编译的具体流程
	
(2)静态链接
	1)gcc -o hello hello.c -static  // 静态链接	

(3)库
	1)动态库:
		生成动态库:
			gcc -shared  -o libsub.so  sub.o  sub2.o  sub3.o		//可以使用多个.o生成动态库
			gcc -o test main.o  -lsub  -L /libsub.so/所在目录/
		使用动态库:
			libsub.so放到Ubuntu的/lib目录
			export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/a  		//声明动态库目录
	2)静态库:
		生成静态库:
			ar  crs  libsub.a  sub.o  sub2.o  sub3.o(可以使用多个.o生成静态库)
			gcc  -o  test  main.o  libsub.a  (如果.a不在当前目录下,需要指定它的绝对或相对路径)

		使用静态库:
			不需要把静态库libsub.a放到板子上

(4)其他用法:
	1)其他用法
		(1)警告选项:gcc -Wall -c main.c		//警告选项
		(2)调试选项:-g 
		(3)优化选项:-O或-O1(较少优化)、-O2(常用)、-O3(更多优化)、-O0(不优化)
		
	2)其他少用用法:
		gcc -E main.c   // 查看预处理结果,比如头文件是哪个
		gcc -E -dM main.c  > 1.txt  // 把所有的宏展开,存在1.txt里
		gcc -Wp,-MD,abc.dep -c -o main.o main.c  // 生成依赖文件abc.dep,后面Makefile会用
		echo 'main(){}'| gcc -E -v -  // 它会列出头文件目录、库目录(LIBRARY_PATH)

		gcc -v -nostartfiles -o test main.o sub.o	//不链接系统标准启动文件,而标准库文件仍然正常使用
		gcc -v -nostdlib -o test main.o sub.o	//不链接系统标准启动文件和标准库文件,只把指定的文件传递给链接器

		gcc -L. -o test main.o -lsub			//用-Ldir选项将当前目录加入搜索路径

注意:
	详细可参见 韦东山手册,较详细,有一定参考价值

参考:韦东山Linux教程

标签:GCC,libsub,gcc,链接,编译器,test,main,hello
From: https://www.cnblogs.com/charlie12345/p/17681066.html

相关文章

  • css预编译器: center;}
    CSS预编译器是一种用于构建CSS的工具,它可以将CSS代码转换为更易于管理和维护的格式。它们可以使CSS代码更加灵活,更易于重用,并且可以帮助开发人员更轻松地组织和管理CSS代码。CSS预编译器是一种用于构建CSS的工具,它可以将CSS代码转换为更易于管理和维护的格式。它们可以使CSS代码更......
  • conda中安装GCC
    一般在linux中gcc都是安装在系统路径下,有的时候需要更换gcc版本但是又没有系统权限,这时候就可以考虑使用conda下集成的gcc。  安装方法:condaconfig--addchannelsconda-forgecondainstallgcc=12   condainstallgcc=12 -c conda-forge      ......
  • GCC实现多文件编译,静态库,动态库
    GCC实现多文件编译,静态库,动态库一代码 //add.hintadd(inta,intb);  //add.cintadd(inta,intb){  returna+b;}  //main.c #include<stdio.h>#include"add.h" voidmain(){   printf("3+2=%d\n",add(3+2));} 二......
  • 源码编译GCC7.3.0
    环境系统CentOSLinuxrelease7.9.2009(AltArch)docker虚拟机创建/home/gcc目录构建整个gcc编译工程目录mkdir/home/gcccd/home/gcc源码下载wgethttp://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.xz解压tarjxvfgcc-7.3.0.tar.xz创建中间文件输出目录mkdirg......
  • CentOS离线安装gcc环境附安装包
    原文链接:https://blog.csdn.net/niceyoo/article/details/1147853331、关于gcclinux内核本身不依赖gcc,gcc只是一个编译软件,是在kernel的源码变成可执行文件的时候起作用,真正使用起来就没有什么关系。查看gcc版本gcc-v如果没有则显示:2、安装步骤2.1、下载gcc安装包gcc下载地......
  • Django-CKEditor富文本编译器相关知识介绍
    安装pipinstalldjango-ckeditorpipinstallpillow注册富文本编译器在settings中的INSTALLED_APPS代码块中加入ckeditor和ckeditor_uploader(可支持图片上传)配置富文本编译器在settings中增加以下代码:#指定富文本编辑器或其他上传文件的根目录,这里为/test_blog/media......
  • #pragma GCC diagnostic push 和 #pragma GCC diagnostic pop
    用途#pragmaGCCdiagnosticpush:用于记录当前的诊断状态#pragmaGCCdiagnosticpop:用于恢复诊断状态用法#pragmaGCCdiagnosticpush#pragmaGCCdiagnostic[kind]"option"/*code*/#pragmaGCCdiagnosticpush示例#pragmaGCCdiagnosticignored"option":忽略o......
  • gcc编译器
    gcc编译器1.hello.c-给谁看计算机-只能看懂二进制内容例如:010010101010110101人-看明白结果:人可以看明白,机器看不明白​ 将当前缩写的代码经过翻译得到计算机可以看懂的代码,翻译的过程叫做编译,编译中需要用到的工具叫做编译器而gcc就是编译器,编译器还有......
  • gcc编译器
    gcc编译器hello.c-给谁看计算机-只能看懂二进制内容-010010101010110101人-看明白结果-人可以看明白计算机-蒙圈将当前缩写的代码经过翻译得到计算机可以看懂的代码,翻译的过程-编译编译中需要用到的工具,编译器gcc就是编译器注意:编译器不唯一vcter......
  • gcc make cmake ninja的区别
    理清C++编译过程用到的工具概念ref:GCC、CMake、CMakelist、Make、Makefile、Ninja啥关系?一图讲透!-知乎(zhihu.com)早先学C++的时候,因为只需要点击IDE的运行按钮,程序就可以跑起来,写过最复杂的只不过是几个文件的学生管理系统。现在要重新拾起C++,看的项目和之前的不可同日而......