因此,在花了几个小时手动配置autotools之后,我终于设法为我的项目创建了一个makefile。唯一的问题?它给我带来链接器的问题。
让我更好地解释一下:我有一个分为几个子程序的项目,所有子程序都链接到主程序main.c.我的问题是,虽然我可以使用gcc正确编译所有内容,但make会给我带来可怕的collect2:ld返回1退出状态错误,命名为main的未定义引用作为原因。现在,我们都知道这是一个链接错误,作为证明我可以编译所有文件而不链接它们在Makefile.am中的CFLAGS之间添加-c。但我想我们已经知道了。
我的问题是:我应该将什么添加到Makefile.am(我的src文件夹中的那个,我猜?)文件,以便让它将所有文件彼此链接而不是单独链接,以便链接器将在main.o中找到入口点?基本上,相当于运行“gcc program1.c program2.c main.c”。我知道automake会这样做,因为它会逐步构建文件,当时只有一个,我知道这是一个愚蠢的问题,但它无论如何都让我发疯。这是我第一次使用autotools,帮助我让它不是最后一次!
答案 0 :(得分:2)
如果foo
是您的计划名称,并且您没有做任何花哨的事,
bin_PROGRAMS = foo
foo_SOURCES = program1.c program2.c main.c
foo_LDADD = # any other libraries go here as -l arguments
应该足够Makefile.am
。