C程序的编译和链接 - gcc

gcc 工具调用 C预处理器、C编译器、汇编器和连接器。

 C预处理器: 扩展宏定义并包含头文件

  C编译器:   根据源文件中的指令创建汇编语言代码

   汇编器  :   创建计算机刻度的目标文件,每个源文件都会创建一个目标文件

   连接器  :    连接器搜索指定的函数库,找到程序使用的函数,并将这些函数的目标模块与本程序的目标代码合并在一起。

                         默认情况下,C编译器会连接标准C函数库libc.o  

    如果希望连接器搜索其他函数库,用户必须在命令行上使用 -l ( 小写l ) 选项指定这些函数库。与大多数Linux系统工具选项不同,-l 选项在命令行上的位置并不是在所有文件名之前,而是通常出现在所有应用它的模块的文件名之后。

                         在下面的示例中,C 编译器搜索数学函数库 libm.o

                           $  gcc calc.c -lm 

                           % -l 选项使用函数库名称约定,将跟在-l后面的那个字母追加到lib后面,并添加扩展名.so 或者.a. 

                               本例中的m代表libm.so

                           使用相同的命名机制,可以使用下面的命令连接到名为libgraphics.a的图形函数库:

                            $  gcc pgm.c -lgraphics


                          如果使用这个约定来命名函数库,gcc知道在/usr/lib 和/lib中搜索这些函数库。还可以使用-L选项让gcc搜索其他目录:

                            $  gcc  pgm.c  -L/usr/XllR6/lib  -lgraphics

                            在这个示例中,gcc在搜索/usr/lib和/lib目录之前,在工作目录和/usr/XllR6/lib中搜索函数库文件libgraphics.a



gcc 和编译有关的选项

-c  只激活预处理、编译和汇编,生成扩展名为.o 的目标代码文件

-S 只激活预处理和编译,生成扩展名为.s的汇编代码文件

-E  只激活预处理,并将结果输出至标准输出

-g  为调试程序(如gdb)生成相关信息


-c  选项在编写大型程序时是必须的。存在依赖关系的源代码文件总是需要首先编译成目标代码,最后一起连接成可执行文件。


依据以上四步,依次生成

经预处理的C原始程序  *.i ,    汇编语言原始程序 *.s  ,   二进制目标代码  *.o  ,    连接后生成可执行文件     

摘自: 李玉波等, 《Linux C 编程》

---------------------------------------------------------------------------

g++   my_main.cpp  -o   my_mian  -I /usr/local/include -L /usr/local/lib -lopencv_imgproc -lopencv_core -lopencv_highgui

注:-I  为大写的字母i, 是包含头文件

       -L 为包含的库文件路径, 后面是包含的具体的三个库函数

            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值