首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AM_LDFLAGS和LDFLAGS的区别是什么?

AM_LDFLAGS和LDFLAGS的区别是什么?
EN

Stack Overflow用户
提问于 2014-12-26 09:33:12
回答 2查看 4K关注 0票数 3

我想知道AM_LDFLAGS和LDFLAGS之间的区别是什么,因为我遇到了一个错误

代码语言:javascript
复制
error: AM_LDFLAGS must be set with '=' before using '+='

当我在foreach循环中使用AM_LDFLAGS时,我的make文件代码如下所示:

代码语言:javascript
复制
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))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-26 14:25:52

如果这个错误是抱怨它在抱怨什么(我一点也不确定它会/应该是什么),那么我认为解决方案就像添加

代码语言:javascript
复制
AM_LDFLAGS =

作为使用+=的foreach循环上方的行。

来自GNU自动手册的8.7 Variables used when building a program部分:

AM_LDFLAGS 这是Makefile.am作者可以用来传递其他链接器标志的变量。在某些情况下,这是不使用的,优先于每个可执行文件(或每个库) _LDFLAGS。

票数 1
EN

Stack Overflow用户

发布于 2014-12-26 09:45:21

_I想知道AM_LDFLAGS和LDFLAGS_之间有什么区别

LDFLAGS是从Autoconf继承的变量,AM_LDFLAGS是由automake定义的变量。

根据自动驾驶系统的手册页

这是Makefile.am作者可以用来传递其他链接器标志的变量。在某些情况下,这是不使用的,优先于每个可执行文件(或每个库) _LDFLAGS

但是,根据提供的这里信息,错误仍然存在,这似乎是变量使用上的一个问题。Automake期望在添加变量之前必须将其设置为某个值。

解决这一问题的正确方法将与Etan Reisner提供的其他答案中提到的方法相同,只需在循环之前显式设置AM_LDFLAGS,如下所示

代码语言:javascript
复制
AM_LDFLAGS =     // which "sets" the AM_LDFLAGS

然后再做

代码语言:javascript
复制
AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27655278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档