[devel] --as-needed

Dmitry V. Levin =?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Сб Мар 18 22:06:45 MSK 2006


On Tue, Mar 07, 2006 at 04:11:26PM +0300, Dmitry V. Levin wrote:
> On Tue, Mar 07, 2006 at 01:47:40PM +0300, Mikhail Zabaluev wrote:
> > В Втр, 07/03/2006 в 12:54 +0300, Dmitry V. Levin пишет:
> > > Все они не собрались по причине
> > > /usr/bin/ld: BFD 2.16.91.0.6 20060212 internal error, aborting at elflink.c line 6453 in elf_link_output_extsym
> > > /usr/bin/ld: Please report this bug.
> > > 
> > > Похоже, мы устроили --as-needed нагрузочное тестирование. :)
> > 
> > Значит, весь этот кошмар пока откладывается? Ф-фух :)
> 
> Ну почему откладывается?  Баги будем виксить. :)

Бага исправлена, можно спокойно линковать.

Обнаружилась ещё одна типичная проблема, которую легко понять на
приведённом ниже простом примере:

$ cat libfoo1.c 
int foo1(void) { return 0; }
$ cat libfoo2.c
extern int foo1(void);
int foo2(void) { return foo1(); }
$ cat foo3.c 
extern int foo2(void);
int main(void) { return foo2(); }

$ gcc -Wall -fpic -shared libfoo1.c -o libfoo1.so
$ gcc -Wall -fpic -shared libfoo2.c -o libfoo2.so -L. -lfoo1
$ gcc -Wall foo3.c -o foo3 -L. -lfoo2
/usr/bin/ld: warning: libfoo1.so, needed by ./libfoo2.so, not found (try using -rpath or -rpath-link)
./libfoo2.so: undefined reference to `foo1'
collect2: ld returned 1 exit status
$ gcc -Wall foo3.c -o foo3 -L. -lfoo2 -Wl,-rpath-link,.

Тонкость в том, что раньше ещё и так работало (хоть и ругалось):
$ gcc -Wall foo3.c -o foo3 -L. -lfoo2 -lfoo1
/usr/bin/ld: warning: libfoo1.so, needed by ./libfoo2.so, not found (try using -rpath or -rpath-link)

А теперь так не работает:
$ gcc -Wall foo3.c -o foo3 -L. -lfoo2 -lfoo1
/usr/bin/ld: warning: libfoo1.so, needed by ./libfoo2.so, not found (try using -rpath or -rpath-link)
./libfoo2.so: undefined reference to `foo1'
collect2: ld returned 1 exit status

Я пока что не знаю, это фича или нет.  Скоро ситуация прояснится.


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 191 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20060318/dc3e1948/attachment-0001.bin>


Подробная информация о списке рассылки Devel