Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Makefile.def与Makefile.am_C_Makefile_Binutils - Fatal编程技术网

C Makefile.def与Makefile.am

C Makefile.def与Makefile.am,c,makefile,binutils,C,Makefile,Binutils,我正在使用linux binutils-2.29。 在父目录中没有Makefile.am,但在所有子目录中都有Makefile.am 在父目录中,存在以下生成文件: Makefile Makefile.def Makefile.in Makefile.tpl 在Makefile.tpl侧边有一条注释,说明Makefile是由Makefile.tpl通过autogen Makefile.def 但是在子目录中没有Makefile.def,当我运行autoeconf&&automake时,它

我正在使用linux binutils-2.29。 在父目录中没有
Makefile.am
,但在所有子目录中都有
Makefile.am

在父目录中,存在以下生成文件:

Makefile  Makefile.def  Makefile.in  Makefile.tpl
Makefile.tpl
侧边有一条注释,说明
Makefile
是由
Makefile.tpl
通过
autogen Makefile.def

但是在子目录中没有
Makefile.def
,当我运行
autoeconf&&automake
时,它从
Makefile.am
生成
Makefile

Makefile.def
Makefile.am
之间到底有什么区别

Makefile.def和Makefile.am之间到底有什么区别

让我们看看GCC,它是一个大型项目,同时也在使用
binutils
。引述:

Makefile.in文件有时很大,可以由automake从Makefile.am文件生成。某些Makefile.in文件(用于在生成树中生成Makefile)由autogen从Makefile.tpl和Makefile.def文件生成。Autogen是一种(GUILE scriptable)工具,旨在简化包含大量重复文本的程序的创建和维护

因此,真正的区别在于如何以及在何处存储
autogen
将使用的部分输入文件。对于GCC,它存储一个
Makefile.tpl
模板(用于生成输出Makefile),而
Makefile.def
存储autogen将使用的定义

例如,在
Makefile.tpl
中,您将找到用于填充
HOST\u LIB\u PATH
变量的模板(注意它使用
HOST\u模块
变量):

Makefile.def
中,有一个主机模块的定义:

host_modules= { module= bfd; bootstrap=true; };
host_modules= { module= opcodes; bootstrap=true; };
// ...
host_modules= { module= bfd; bootstrap=true; };
host_modules= { module= opcodes; bootstrap=true; };
// ...