将“-no-undefined”传递给Libtool LDFLAG

时间:2013-03-01 11:40:58

标签: mingw32 libtool mingw-w64 autogen

我正在Windows上使用MSys和Mingw构建一个dll。项目源只提供autogen.sh,configure.ac和makefile.am。 要生成makefile,请运行autogen.sh然后运行./configure。然后我去手动将-no-undefined添加到makefile中的LDFLAGS。这不是理想的,在生成makefile期间,应该正确设置LDFLAGS。

某处我必须更改配置文件,以便在生成makefile时正确设置LDFLAGS。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您应该可以在Makefile.am中进行设置。如果您的库声明看起来像这样:

lib_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = foo.c

你要加上这一行:

libfoo_la_LDFLAGS = -no-undefined

答案 1 :(得分:1)

作为Jack Kelly's answer的替代方法,您可以在适用的Makefile.am中定义AM_LDFLAGS,例如

AM_LDFLAGS = -no-undefined

将所有库规则的标志传递给链接器(如果需要,请避免重复)。


请注意,Autom4ke manual指出

  

在某些情况下,它不使用,而不是按可执行文件(或按库)_LDFLAGS。

这里的措词不是很清楚,但是section on libtool flags状态

  

如果未定义“ library_LIBTOOLFLAGS”,则使用变量AM_LIBTOOLFLAGS。

Calcote在他的Autotools中明确指出,

  

每个产品变量的存在会覆盖Automake对每个makefile变量的使用,因此您需要在每个产品变量中添加一个每个makefile变量,以使每个makefile变量影响该产品[ ...]。

该语句附带示例,

AM_CFLAGS = ... some flags ...
...
prog1_CFLAGS = ... more flags ... $(AM_CFLAGS)
...