gcc工具使用

版权声明:转载请注明出处。作者:两仪织,博客地址:http://blog.csdn.net/u013894427 https://blog.csdn.net/u013894427/article/details/83349988

预编译,编译,汇编操作

-E

进行预编译操作,生成.i文件,注意,这里的.c文件是main函数所在的文件

cc -E test.c -o test.i

-S

只进行编译操作,不进行汇编,生成汇编文件

gcc -S test.i -o test.s

-c

进行汇编操作,把生成的汇编文件转为二进制的目标文件

gcc -c test.s -o test.o

链接操作

(1)静态链接:

在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。(个人备注:静态链接将链接库的代码复制到可执行程序中,使得可执行程序体积变大)

(2)动态链接:

在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。(个人备注:动态链接指的是需要链接的代码放到一个共享对象中,共享对象映射到进程虚地址空间,链接程序记录可执行程序将来需要用的代码信息,根据这些信息迅速定位相应的代码片段。可移植性差)

这里使用到的命令如下:

//这里的方式是-o后面直接跟目标文件,然后再跟需要的.o文件
gcc -o x x1.o x2.o 

实际使用的命令

实际过程中,可以直接忽略具体的执行步骤,只需要输入和输出就够了

gcc -o test file1.c file2.c

常用的gcc的选项

  1. -O0 -O1 -O2 -O3 译器的优化选项的4个级别,-O0表示示没有优化,-O1为缺省值,-O3优化级别最高高
  2. -w 不生生成任何警告信息
  3. -Wall 生成所有警告信息。
  4. -g 生成调试信息。GNU 调试器可利用用该信息。
  5. -static 此选项将禁止使用动态库,所以,编译出来的东西,一般都很大。
  6. -share 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库

猜你喜欢

转载自blog.csdn.net/u013894427/article/details/83349988