GUN编译工具

gun编译器是GNU组织为了编译Linux内核源码而开发的一款编译工具,
经过长时间的发展目前已经成为一个编译平台,能够支持多种编程语言(C、C++、Java、Objective-C、Ada、C#)
和操作系统(UNIX、Linux、Windows),gcc -v 可以查看编译器版本。

通过gun编译器构建可执行文件的过程(C语言)

    gcc -E code.c -o code.i -> code.i
    gcc -S code.i -> code.s
    gcc -c code.s -> code.o
    gcc code.o ... -> a.out
    
    参数:
    -E 预处理
    -S 产生汇编文件
    -c 只编译不链接
    -o 指定输出文件的名字
    -Wall 尽可能多的产生警告		(一般调试项目都要加上)
    -Werror 把警告当错误处理		(一般调试项目都要加上)
    -x 指定源代码的语言
    -g 生成调试信息
    -pedantic 对不符全ANSI标准的语法产生警告(对gcc扩展的语法产生警告)。

	文件后缀:
    .h 头文件
    .h.gch 头文件的编译结果,会被优先使用,建议立即删除
    .c 源文件
    .i 预处理文件
    .s 汇编文件
    .o 目标文件
    .a 静态库文件
    .so 共享(动态)库文件

	编译多个文件:
    1、头文件作用
        头文件卫士
        声明外部变量、函数、类、结构、联合、枚举
        定义宏、类型别名
        包含其它头文件
        
    *2、包含头文件时要注意(重要)
        #include <> 从系统指定的位置加载。
        #include "" 先从当前目录下加载,再从系统指定的位置加载。
    	当没函数声明时,编译器会猜测函数的格式,这种猜测行为叫函数隐式声明。

头文件卫士演示:

#ifndef CODE.H
#define CODE.H
/*
代码......函数声明,结构体等定义,全局变量声明。。。
*/
#endif//CODE.H
头文件的三种定位方式:
    1、#include "路径/xxx.h" 直接把路径写在代码中,但如果头文件路径发生变化,需要修改源代码。

	2、gcc -I目录 在编译时指定加载头文件的路径。

	3、设置C_INCLUDE_PATH环境变量,来添加头文件的查找路径。
    打开配置文件:vim ~/.bashrc
    在文件末尾添加一行内容:export export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/zhizhen/Linux环境编程day01/include
    重新加载配置文件:source ~/.bashrc
    env命令可以查看所有环境变量。
    扩展:PATH环境变量代表是命令的查找路径,把.添加进去以后再执行程序就不需要./了。
    注意:删除环境变量时需要退出终端,再重新打开
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: gun链接器ld是GNU工具链中负责将编译器生成的目标文件链接成可执行文件或库文件的软件。它具有非常灵活的选项,可以满足许多不同的需求,是开发高质量软件的重要工具之一。 ld具有广泛的功能,例如支持多种输入文件格式、支持各种不同的目标平台、支持动态链接和静态链接、兼容各种标准的ELF格式等等。此外,它还支持各种选项,例如控制链接地址和代码段大小,以及对库的搜索和链接等等。 使用ld链接器时,一般需要提供一些参数指定输入文件和输出文件,以及需要执行的操作。例如,如果要将多个目标文件链接成一个可执行文件,可以使用命令“ld -o executable file1.o file2.o”来指定输出文件名和输入文件名。 总之,GNU链接器ld是一个功能强大且灵活的工具,可以帮助软件开发人员创建高质量的可执行文件和库文件。 ### 回答2: gun链接器ld是一个常见的链接器,被广泛用于开发工具链中,以便将可执行文件和库文件组合成为最终的可执行程序或库文件。 在编译程序时,源代码通常会被编译成为目标代码(Object Code),这些目标代码可能包含一些符号和引用,需要在链接阶段解决这些符号和引用之间的引用关系。这就是ld的作用,它会在目标代码中查找所需要的符号或者库文件,并将它们链接起来形成最终的可执行文件或者库文件。 ld可以执行多种不同的链接方式,包括静态链接、动态链接等等。静态链接将目标代码和库文件组合成为一个可执行文件,而动态链接则会在运行时动态地加载库文件。 ld的中文版也是非常常见的,在开发C或者C++程序时,大部分开发环境都包含了ld中文版,用户可以使用这个工具来进行链接。同时,由于GNU工具链的开源性,用户还可以自行编译并安装中文版的ld工具。 总之,gun链接器ld是一个非常重要的编程工具,它可以帮助开发者将程序的各个部分链接在一起,从而生成最终的可执行程序或者库文件。 ### 回答3: gun链接器ld是一种常用的二进制文件链接器。它可以将多个独立编译的目标文件和库文件合并为一个可执行文件或动态链接库。LD作为一个可重定位文件链接器,也可以将多个目标文件链接成一个可重定位文件。在Linux系统上,LD是统一的链接器,在编译程序时会自动调用LD进行链接操作。 作为GNU开源工具集的一部分,LD拥有广泛的应用场景。它可以运行在Linux和其他大多数UNIX系统上,并支持不同的架构和操作系统。同时,它也具有丰富的特性和高度的灵活性,可以通过参数和脚本文件对链接过程进行详细的控制。在使用LD时,用户可以通过一些选项来定制链接器的行为,例如指定链接的目标文件、链接器的输出格式、链接器的搜索路径、链接时的符号解析等等。 总之,gun链接器ld是一个非常重要的工具,它为开发人员提供了强大的链接功能,使得我们可以更加方便地将多个代码文件组合起来,以及调用预编译好的库函数,例如常见的C标准库和系统库函数。有了LD,用户可以有效地减少代码库的复杂度和大小,提高程序可维护性,也可以极大地提高程序的运行效率和性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值