Libtool正在丢弃“-static”标志。

9

我正在构建flex-2.5.39,我使用以下配置:

./configure --enable-static LDFLAGS=-static CC=/x86_64-linux-musl/bin/x86_64-linux-musl-gcc

但是在最后,libtool并没有静态链接。实际上,它只是丢弃了这个标志:

[ root@836843e09b55:/flex-2.5.39 ]$ make flex
/bin/bash ./libtool --tag=CC   --mode=link /x86_64-linux-musl/bin/x86_64-linux-musl-gcc  -g -O2  -static -o flex ccl.o dfa.o ecs.o scanflags.o gen.o main.o misc.o nfa.o parse.o scan.o skel.o sym.o tblcmp.o yylex.o options.o scanopt.o buf.o tables.o tables_shared.o filter.o regex.o lib/libcompat.la -lm 
libtool: link: /x86_64-linux-musl/bin/x86_64-linux-musl-gcc -g -O2 -o flex ccl.o dfa.o ecs.o scanflags.o gen.o main.o misc.o nfa.o parse.o scan.o skel.o sym.o tblcmp.o yylex.o options.o scanopt.o buf.o tables.o tables_shared.o filter.o regex.o  lib/.libs/libcompat.a -lm
[ root@836843e09b55:/flex-2.5.39 ]$

我应该如何让libtool接受标志并将其传递下去?
1个回答

12

使用--static(额外减号)可以使其正常工作。


1
谢谢您的回答。如果这种行为背后有一些逻辑或者只是libtool中的一个bug,那就太好了。 - yugr
在我构建OpenVPN时,这个方法对我很有效。通常使用“-static”就足够了,但是由于OpenVPN使用libtool链接最终可执行文件的方式有些特殊,所以需要使用“--static”。 - CR.
1
@yugr 对我来说,这真的像是一个 bug... 我最初认为额外的减号会起到转义字符的作用,链接器实际上会得到 -static,但链接器确实得到了 --static。所以看来只有幸运才能使 (1) libtool 不识别和过滤掉 --static,以及 (2) ld 识别 --static(根据其手册,不应该是这种情况)。它可以工作,但我们不应该强烈依赖它。 - Yves Lhuillier
@YvesLhuillier 我希望有比我更了解的人能够提交一个关于这个问题的错误报告... - yugr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接