[devel] C++ libraries linking

Igor Zubkov =?iso-8859-1?q?igor=2Ezubkov_=CE=C1_gmail=2Ecom?=
Вт Авг 7 00:48:54 MSD 2007


2007/8/6, Michael Shigorin <mike osdn.org.ua>:
> On Mon, Mar 20, 2006 at 10:29:56PM +0200, Igor Vlasenko wrote:
> > борясь с --as-needed в одном кривом софте (yacas),
> > заметил, что его библиотеки имеют undefined symbols из
> > libstdc++, и действительно, линкуются gcc:
>
> О, а я сегодня по старой памяти и поводу в виде 1.1.0 попробовал
> его упакетить.  Спек в аттаче, итог сборки таков:

Что-то я не вижу спека в аттаче.

> /bin/sh ../libtool --mode=link g++  -pipe -Wall -O2 -march=athlon -mtune=athlon-xp -Wall    -o yacas  yacasmain.o unixcommandline.o stdcommandline.o libyacasnumbers.la libyacas.la libyacasplatform.la ../libltdl/libltdlc.la -lm
> g++ -pipe -Wall -O2 -march=athlon -mtune=athlon-xp -Wall -o .libs/yacas yacasmain.o unixcommandline.o stdcommandline.o  ./.libs/libyacasnumbers.so ./.libs/libyacas.so ./.libs/libyacasplatform.so ../libltdl/.libs/libltdlc.a -ldl -lm
> ./.libs/libyacas.so: undefined reference to `sqrt'
> ./.libs/libyacas.so: undefined reference to `tan'
> ./.libs/libyacas.so: undefined reference to `asin'
> ./.libs/libyacas.so: undefined reference to `log'
> ./.libs/libyacas.so: undefined reference to `atan'
> ./.libs/libyacas.so: undefined reference to `fmod'
> ./.libs/libyacas.so: undefined reference to `acos'
> ./.libs/libyacas.so: undefined reference to `exp'
> ./.libs/libyacas.so: undefined reference to `sin'
> ./.libs/libyacas.so: undefined reference to `pow'
> ./.libs/libyacas.so: undefined reference to `cos'

И что здесь не понятно? -lm должно быть до бинари. Патч прислать?

> > gcc -shared  .libs/deffile.o ...
> > ./.libs/libyacasnumbers.so ./.libs/libyacasplatform.so -lm -ldl
> > -march=athlon -Wl,--as-needed -Wl,-soname -Wl,libyacas.so.0 -o
> > .libs/libyacas.so.0.0.0
> >
> > однако это получается из
> >
> > ../libtool --mode=link g++ -pipe -Wall -O2 -march=athlon -Wall
> > -Wl,--as-needed -o libyacas.la -rpath /usr/lib deffile.lo ...
> > ... <other>.lo libyacasnumbers.la libyacasplatform.la -lm -ldl
> >
> > где явно указан g++.
> >
> > Кто знает в чем причина?

-- 
icesik


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