The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Проблема: линковка статических библиотек redhat73 в FreeBSD"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Проблема: линковка статических библиотек redhat73 в FreeBSD"  
Сообщение от Diego email(??) on 09-Авг-07, 12:17 
Проблема: линковка статических библиотек redhat73 в FreeBSD.

Доброго времени суток, господа! :)

Опишу коротко, может быть кто-то сталкивался или в курсе как данная проблема решается, заранее спасибо за внимание.

Есть необходимость пересобрать программный комплекс, поставляющийся под RedHat 7.3, d в операционной среде FreeBSD (FreeBSD 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Fri Jan 12 11:05:30 UTC 2007     root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP  i386)
поскольку в режиме совместимости некоторые бинарники работают некорректно. Комплекс поставляется с исходными кодами, но работает с библиотеками стороннего разработчика, которые  включены в дистрибутив только в прекомпилированном в виде статических библиотек (.a)

При линковке данных библиотек линкер выдает следующее:

gcc -v -nostdlib -lc -lgcc -I... -o test test.c ... -lPGSTK -lc -lgcc
Reading specs from /usr/local/lib/gcc-lib/i386-portbld-freebsd6.2/2.8.1/specs
gcc driver version 2.8.1 executing gcc version 2.96
/usr/local/lib/gcc-lib/i386-portbld-freebsd6.2/2.8.1/cpp -lang-c -v -I. -I... -iprefix i386-portbld-freebsd6.2/2.8.1/ -undef -D__GNUC__=2 -D__GNUC_MINOR__=96 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem(posix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_i386__ test.c /tmp/ccl5bfNW.i
Using builtin specs.
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)
cpp0 -lang-c -v -I... -iprefix i386-redhat-linux/2.96/ -D__NO_INLINE__ -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_i386__ -D__GNUC__=2 -D__GNUC_MINOR__=96 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem(posix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_i386__ -iprefix i386-portbld-freebsd6.2/2.8.1/ test.c -o /tmp/ccl5bfNW.i
GNU CPP version 2.96 20000731 (Red Hat Linux 7.3 2.96-110) (cpplib) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
.
... (список опущен)
End of search list.
/usr/local/lib/gcc-lib/i386-portbld-freebsd6.2/2.8.1/cc1 /tmp/ccl5bfNW.i -quiet -dumpbase test.c -version -o /tmp/ccl5bfNW.s
GNU C version 2.96 20000731 (Red Hat Linux 7.3 2.96-110) (i386-redhat-linux) compiled by GNU C version 2.96 20000731 (Red Hat Linux 7.3 2.96-110).
as -V -Qy -o /tmp/ccl5bfNW1.o /tmp/ccl5bfNW.s
GNU assembler version 2.11.93.0.2 (i386-redhat-linux) using BFD version 2.11.93.0.2 20020207
/usr/local/lib/gcc-lib/i386-portbld-freebsd6.2/2.8.1/collect2 -m elf_i386_fbsd -dynamic-linker /lib/ld-linux.so.2 -o test -L/data/seadas/hdf/TOOLKIT/lib/linux -L -L/usr/local/lib/gcc-lib/i386-portbld-freebsd6.2/2.8.1 -L/usr/local/lib -lc -lgcc /tmp/ccl5bfNW1.o -lPGSTK -lc -lgcc /usr/local/lib/libhdf5.a /usr/local/lib/libmfhdf.a /usr/local/lib/libdf.a /usr/local/lib/libz.a /usr/local/lib/libjpeg.a /usr/local/lib/libsz.a
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000008048b60
.../libPGSTK.a(IO0_GetHeader)(.text+0x17d): In function `PGS_IO_L0_GetHeader':
: undefined reference to `__errno_location'
...libPGSTK.a(IO0_GetHeader)(.text+0x25d): In function `PGS_IO_L0_GetHeader':
: undefined reference to `__strtol_internal'
... и тому подобное...
: undefined reference to `stderr'

По именам референсов видно, что проблема при линковке библиотеки libgcc.

Здесь в качестве эксперимента были задействованы libgcc и libc вместе с libgcc.a libc.a и динамическими .so из дистрибутива RedHat, никаких отличий от линковки библиотек FreeBSD нет, как это ни странно. Проверено, что линкер берет именно те библиотеки, которые нужно. Казалось бы, все референсы должны быть определены, так как в редхатовских библиотеках они присутствуют.

Вот поэтому и вопрос: в чем еще может быть проблема? :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Проблема: линковка статических библиотек redhat73 в FreeBSD"  
Сообщение от jd (??) on 10-Авг-07, 06:00 
libgcc относится к компилятору (C++)
Проблема скорее всего в разнице версий оного. Попробуйте собрать на двух платформах компилятором одной версии. Версии 2.96 не существует - это патч от RedHat (в адрес которого, кстати, не раз слышал нарекания, хотя это к делу не относится). Последняя версия в этой ветке 2.95.3 - вот ей и попробуйте.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2023 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру