`

Ubuntu底下的C编程 编译-汇编-连接

阅读更多
从C语言到最终可执行程序主要分两个阶段:
   1 将各个C语言的源文件生成目标文件(*.o);
   2 将各个目标文件进行连接生成可执行程序

动态连接方法
生成目标文件的第一步骤:
sudo gcc -pipe -g -Wall -I. -c -o getarg.o getarg.c
sudo gcc -pipe -g -Wall -I. -c -o writeinfo.o writeinfo.c
sudo gcc -pipe -g -Wall -I. -c -o main.o main.c

-g 表示包含调试信息 
-Wall 表示输出所有的警告
-I. 表示包含当前目录为头文件搜索路径,这个选项用于增加搜索文件的路径
    尤其在工程较大,文件分布在各个目录的情况下经常使用
-pipe 表示使用管道替换临时文件
-o 指定目标文件的名称

生成目标的第二个步骤:
    连接三个目标,生成可执行程序
    $gcc -Wall -g getarg.o writeinfo.o main.o -o test
    test为输出文件的名称,由-c指定


静态链接方法
    $gcc -Wall -g getarg.o writeinfo.o main.o -static -o test_static
    静态连接生成时,将所需要的库函数都纳入文件之中哦姑娘,运行

 
实际上,编译过程分为3个阶段:预处理,编译,汇编
预处理(去注释,头文件展开,宏替换)
   gcc -E main.c
将C语言编译为汇编语言
   gcc -pipe -g -Wall -I. -S main.c -o main.s
汇编语言生成目标文件
   gcc -pipe -g -Wall -I. -c main.s -o main.o
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics