Удалить флаг компилятора / компоновщика из конфигурации автоинструментов

Существует проект (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 в таком случае.

Другие вопросы по тегам