2014-12-26 33 views
3

我想知道的是什麼AM_LDFLAGS和LDFLAGS之間的差別,因爲我,而我是用AM_LDFLAGS在foreach循環 我化妝所面臨的錯誤是AM_LDFLAGS之間有什麼區別和LDFLAGS

error: AM_LDFLAGS must be set with '=' before using '+=' 

文件代碼,如下所示:

program_INCLUDE_DIRS := /usr/bin/PR__bin 

program_LIBRARY_DIRS := /usr/lib/PR__lib 

CFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir)) 

AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir)) 
+1

GNU的文檔說:「'AM_LDFLAGS'這是可變的Makefile.am作者可以使用額外的連接標誌通過在某些情況下,這不會被使用,優先於每個可執行文件(或每個庫)'_LDFLAGS'「。但它不說*哪些情況。 –

+0

@WeatherVane更新相同。你秒打我。 :-) –

+0

區別在於'LDFLAGS'可能是由Autoconf設置或刪除的,但是'AM_LDFLAGS'是一個Automake-only變量,所以如果你沒有明確地賦予它任何值,那麼它是未設置的...因此錯誤。 –

回答

1

如果這個錯誤是抱怨它所說的抱怨(而我完全不知道爲什麼它會/應該是),那麼我會認爲解決方案將如簡單的理由t加

AM_LDFLAGS = 

作爲foreach循環上面的行使用+=

從GNU的Automake手冊第8.7 Variables used when building a program

AM_LDFLAGS

This is the variable the Makefile.am author can use to pass in additional linker flags. In some situations, this is not used, in preference to the per-executable (or per-library) _LDFLAGS.

+0

鑑於這個消息,不,默認情況下它沒有任何價值(或者默認值在你的初始任務中是無用的或者可以包含的,但我不知道)。然而,我仍然不知道爲什麼autotools會首先抱怨這一點。 –

+0

是的,這個答案在使用'+ ='「 – Sara

+0

之前解決了錯誤」錯誤:AM_LDFLAGS必須設置爲'=',但是如果它具有,我的意思是標準c庫,它不會覆蓋初始值。 ? – Sara

5

_I want to know what is the difference between AM_LDFLAGS and LDFLAGS_

LDFLAGS距離的Autoconf繼承了變量,AM_LDFLAGS是由automake定義的變量。

作爲每automake的manual page

This is the variable the Makefile.am author can use to pass in additional linker flags. In some situations, this is not used, in preference to the per-executable (or per-library) _LDFLAGS .

然而,reagrding誤差,按照規定的here信息,它看起來像在可變的使用的問題。 Automake預計該變量必須設置爲的一些的值,然後才能附加

來解決,這將是相同的惡灘賴斯納提供的other answer提到的一個正確的方法,只需設置AM_LDFLAGS明確循環之前,像

AM_LDFLAGS =  // which "sets" the AM_LDFLAGS 

,然後做

AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir)) 
+0

@ juanchopanza好了,因爲_bug_OP可能有其他想法。我認爲這會有所幫助。 –

+0

@SouravGhosh,我會升級automake並回饋你,但是在我的makefile中有什麼問題,因爲我使用了帶有foreach循環的AM_LDFLAGS ,請另一個問題應該使用AM_CFLAGS而不是CFLAGS? – Sara

+0

@莎拉,我也不是很確定,所以最好不要提出任何錯誤。你可以更新你的問題,也許有人知識會肯定幫助你。 :-) –

相關問題