有一个项目(Antlr3 for C)可以用./configure && make && make install
.
编译命令中使用的标志之一是-Wl,-soname -Wl,libantlr3c.so
. 整个命令是:
libtool: link: gcc -shared .libs/antlr3baserecognizer.o .libs/antlr3basetree.o \
.libs/antlr3basetreeadaptor.o .libs/antlr3bitset.o .libs/antlr3collections.o \
.libs/antlr3commontoken.o .libs/antlr3commontree.o .libs/antlr3commontreeadaptor.o \
.libs/antlr3commontreenodestream.o .libs/antlr3convertutf.o .libs/antlr3cyclicdfa.o \
.libs/antlr3debughandlers.o .libs/antlr3encodings.o .libs/antlr3exception.o \
.libs/antlr3filestream.o .libs/antlr3inputstream.o .libs/antlr3intstream.o \
.libs/antlr3lexer.o .libs/antlr3parser.o .libs/antlr3rewritestreams.o \
.libs/antlr3string.o .libs/antlr3tokenstream.o .libs/antlr3treeparser.o \
-m64 -Wl,-soname -Wl,libantlr3c.so -o .libs/libantlr3c.so
我怎样才能只删除-Wl,-soname -Wl,libantlr3c.so
部分?
我知道编译器和链接器标志可以在配置命令中被CFLAGS
覆盖LDFLAGS
。根据此链接,它类似于
./configure CFLAGS=blah LDFLAGS=blah
尽管我知道它们可以/应该用作环境变量,例如
CFLAGS=BLAH LDFLAGS=blah ./configure
但是,我认为这些用途会尝试覆盖所有CFLAGS
or LDFLAGS
。我只想排除-soname
标志(据我所知,这-Wl,
意味着编译器将标志传递给链接器。
到目前为止,我对类似LDFLAGS=-soname=
or及其变体的尝试都没有成功。CFLAGS="-Wl,soname -Wl,"
从这个问题看来,似乎可以从 Makefile 中删除标志,但我看不出这适用于使用命令从命令行覆盖标志configure
。也可以将这些变量提供给make
命令而不是configure
命令,但这也不成功。
请注意,更改 Makefile 对我来说没有意义,因为它是由configure
命令生成的。