我正在构建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接受标志并将其传递下去?
-static
,但链接器确实得到了--static
。所以看来只有幸运才能使 (1) libtool 不识别和过滤掉--static
,以及 (2) ld 识别--static
(根据其手册,不应该是这种情况)。它可以工作,但我们不应该强烈依赖它。 - Yves Lhuillier