2011-01-26 58 views
1

因此,花了几个小时手动配置autotools后,我终于设法为我的项目创建了一个makefile。唯一的问题?它给了我连接器的问题。automake和连接问题

让我更好地解释一下:我有一个项目分成几个子程序,所有这些子程序都要链接到主程序main.c.我的问题是,虽然我可以使用gcc正确编译所有东西,但是让我可怕的collect2:ld返回1退出状态错误,将未定义的引用命名为main。现在,我们都知道这是一个链接错误,并且作为证明我可以编译所有文件而不链接它们,在Makefile.am中的CFLAGS中添加-c。但我们已经知道了。

我的问题是:我应该添加到Makefile.am(我的src文件夹中的一个,我猜?)文件,以便让它将所有文件链接到另一个而不是分开,以便链接器会在main.o中找到入口点?基本上相当于运行“gcc program1.c program2.c main.c”。我知道automake是这样做的,因为它逐渐建立了文件,当时一个,我知道这是一个愚蠢的问题,但它无论如何都让我发疯。这是我第一次使用自动工具,帮助我使它不是最后一个!

回答

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

+0

就是这样,谢谢! – Charles 2011-01-26 11:29:30