[devel] slatec, fortran libraries, weak symbols

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Сб Ноя 27 00:26:49 MSK 2004


Здравствуйте.
Библиотека slatec собирается так:

for f in *.f; do g77 -c %optflags %optflags_shared "$f"; done
g77 -shared -o lib%name.so.%version -Wl,-soname=lib%name.so.%version *.o

echo 'main(){}' >ldtest.c
gcc ldtest.c lib%name.so.%version

В результате получается:

+ gcc ldtest.c libslatec.so.4.1
libslatec.so.4.1: undefined reference to `dgvec_'
libslatec.so.4.1: undefined reference to `uvec_'
libslatec.so.4.1: undefined reference to `uivp_'
libslatec.so.4.1: undefined reference to `duvec_'
libslatec.so.4.1: undefined reference to `duivp_'
libslatec.so.4.1: undefined reference to `gvec_'
libslatec.so.4.1: undefined reference to `dfmat_'
libslatec.so.4.1: undefined reference to `fmat_'
collect2: ld returned 1 exit status

При изучения исходников выяснилось следующее (цитирую из dbvsup.f):

C     The user must supply subroutines DFMAT, DGVEC, DUIVP and DUVEC,
C     when needed (they must be so named), to evaluate the derivatives
C     as follows
C
C        A. DFMAT must be supplied.

Т.е. функции, которые должны быть определены пользователем, на практике
оборачиваются undefined references в библиотеке.  Подозреваю, что эта
проблема может быть решена с помощью weak symbols.  Кто-нибудь знает,
как именно?
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20041127/df11be04/attachment-0001.bin>


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