[sisyphus] binutils problem?
Ivan Adzhubey
=?iso-8859-1?q?iadzhubey_=CE=C1_rics=2Ebwh=2Eharvard=2Eedu?=
Вт Апр 25 07:25:39 MSD 2006
On Monday 24 April 2006 23:17, Alexey Tourbin wrote:
> On Mon, Apr 24, 2006 at 11:05:35PM -0400, Ivan Adzhubey wrote:
> > On Monday 24 April 2006 23:03, Alexey Tourbin wrote:
> > > On Mon, Apr 24, 2006 at 10:56:51PM -0400, Ivan Adzhubey wrote:
> > > > # nm /usr/lib/libm.so
> > > > nm: /usr/lib/libm.so: no symbols
> > >
> > > nm -D
> >
> > Спасибо за наводку, так работает. Это изменение в nm?
>
> Нет, всегда так было.
> Кажется, nm штука древняя и без опций "правильно" работает с *.a архивами.
>
> > Надо править configure
> > скрипты? Подскажите пожалуйста, если у вас есть опыт, а то у меня - нет,
> > а собрать надо срочно!
>
> А зачем это вообще для сборки нужно? Там наверное можно целый кусок
> закомментировать, если понять, чего он хочет и что ему на самом деле нужно.
Да вот я никак и не могу понять, чего же ему нехватает... Тест, который не
проходит, очень простой: собирается тестовая программа, которая содеожит в
main() вызовы всех функций, определенных в тестируемой библиотеке (libgoto,
оптимизированная библиотека линейной алгебры), затем эта тестовая программа
линкуется со свежесобранной библиотекой. В самой библиотеке есть вызоовы к
стандартной libm (sqrt() например), линкуется это все конечно с флагом -lm.
Но линковка все равно обламывается:
./gensymbol linktest _ > linktest.c
gcc -O2 -Wall -fPIC -DF_INTERFACE_F2C -DNEED_F2CCONV -DSMP_SERVER -pthread -DMAX_CPU_NUMBER=2 -DASMNAME= -DASMFNAME=_ -DNAME=_ -DCNAME= -DBUNDERSCORE=_ -DNEEDBUNDERSCORE -I.. -DARCH_X86 -DPENTIUM4 -DL1_DATA_SIZE=8192 -DL1_DATA_LINESIZE=64 -DL2_SIZE=524288 -DL2_LINESIZE=64 -DDTB_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 -DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DCORE_NORTHWOOD -w -o /dev/null
linktest.c ../libgoto_northwoodp-r1.02.so -lpthread -lm && echo OK.
../libgoto_northwoodp-r1.02.so: undefined reference to `sqrt'
collect2: ld returned 1 exit status
make: *** [test] Error 1
Наверное можно и проще, слинковать что-то типа:
int main(void){
sqrt();
return 0;}
Сейчас попробую. Что-то я совсем не понимаю, что происходит...
--
Иван
Подробная информация о списке рассылки Sisyphus