2011-01-26 54 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