Есть проект (Antlr3 для 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. Согласно этой ссылке а> это что-то вроде
./configure CFLAGS=blah LDFLAGS=blah
Хотя я понимаю, что их можно/нужно использовать как переменные окружения, что-то вроде
CFLAGS=BLAH LDFLAGS=blah ./configure
Однако я думаю, что эти варианты использования попытаются переопределить все CFLAGS
или LDFLAGS
. Я только хочу исключить флаг -soname
(который, как я понимаю, -Wl,
означает, что компилятор передает флаг компоновщику.
Ни одна из моих попыток с такими вещами, как LDFLAGS=-soname=
или CFLAGS="-Wl,soname -Wl,"
и их вариациями, пока не увенчалась успехом.
Из этого вопроса видно, что можно удалить флаги из Makefile, но я не вижу, что это применимо к переопределению флагов из командной строки с помощью команды configure
. Также можно передать эти переменные команде make
вместо команды configure
, но это тоже не помогло.
Обратите внимание, мне не имеет смысла менять Makefile, так как он генерируется из команды configure
.