Удалить флаг компилятора / компоновщика из конфигурации автоинструментов
Существует проект (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 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
команда.
1 ответ
Вы не можете удалить -soname
потому что это часть того, как вы создаете общую библиотеку с GCC, и приходит прямо из libtool
, Поскольку вы не можете создать общий объект для ELF без soname (ну, вы можете, но это не очень полезно), libtool не позволит вам удалить это.
Вам, вероятно, лучше объявить, чего вы пытаетесь достичь, потому что у меня есть ощущение, что это не имеет ничего общего с -soname
в таком случае.