我正在使用不同的编译器CC.它不像GCC那样有效.
当我使用GCC时,我可以执行"gcc -o exe_filename source_filename",输出将是一个exe文件.
当我使用CC时,我需要2个步骤.首先我编译源文件(假设它涉及.c和.h文件)并创建.lis文件和.obj文件.然后我做了一个创建.exe文件的链接命令.
LIS,OBJ和EXE文件之间有什么关系?我问这个是因为我想知道如果我想在另一台机器上使用exe而不包含不必要的文件,我需要哪些文件.如果LIS和OBJ仅用于编译,我不需要在另一台机器上.
编译器获取C文件(并包括引用的H文件)并生成对象(OBJ)和列表(LIS)文件.目标文件包含代码和数据,但具有未解析的外部引用.列表通常包括行号,错误和警告消息,以及可选部分,例如类型和变量交叉引用.
链接器组合目标文件并解析对库的外部引用.结果是可执行(EXE)图像.(或创建库时的可共享图像.)
只需要将可执行文件从一个系统复制到另一个系统即可运行该应用程序.该列表可用于解释错误消息,因为它提供了正确相关的行号.如果由于库中的更改而需要重新链接应用程序,则该对象可能很有用,特别是如果目标系统具有比原始系统更旧的版本.