[sisyphus] Need help: sam2p не собирается с указанной архитектурой
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Пн Фев 18 23:18:54 MSK 2008
On Mon, Feb 18, 2008 at 11:00:52PM +0300, Dmitry V. Levin wrote:
> On Tue, Feb 19, 2008 at 01:45:05AM +0600, Michael Pozhidaev wrote:
> > Привет всем!
> > Не могу побороть проблему, из-за которой не получается собрать sam2p.
> > Суть в том, что после
> > ./configure
> > make
> > всё успешно собирается и замечательно работает.
> > Но:
> > при указанной архитектуре CXXFLAGS='-march=i586'
> > сборка очень быстро завершается с ошибкой.
> > Выглядит это так:
> > Compilation started at Tue Feb 19 01:37:44
> >
> > LANG=C make CXXFLAGS='-march=i586'
Обычно так делать нельзя - указание переменной в вызове make полностью
заменяет значение, установленное в Makefile, тем, которое указано в
командной строке; вероятно, в данном случае в результате были потеряны
нужные для сборки опции.
Стандартный способ - использование макроса %configure, который
передаёт CFLAGS и CXXFLAGS скрипту configure; но у этого пакета
configure какой-то странный (CXXFLAGS грубо чистится). Возможный
способ обхода - передача CC="gcc $RPM_OPT_FLAGS" CXX="g++
$RPM_OPT_FLAGS" в вызове configure.
> > g++ -s -O2 -march=i586 -ansi -pedantic -Wall -W -c ps_tiny.c
> > ps_tiny.c: In function 'void copy(const char*)':
> > ps_tiny.c:536: warning: ignoring return value of 'size_t fwrite(const void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result
> > ps_tiny.c: In function 'void compress0(const char*)':
> > ps_tiny.c:605: warning: ignoring return value of 'size_t fwrite(const void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result
> > g++ -s -O2 -march=i586 -ansi -pedantic -Wall -W -c c_lgcc.cpp
> > gcc -s ps_tiny.o c_lgcc.o -o ps_tiny
> > ps_tiny.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
> > c_lgcc.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
> > collect2: ld returned 1 exit status
> > make: *** [ps_tiny] Error 1
> >
> > Compilation exited abnormally with code 2 at Tue Feb 19 01:37:45
> > Кто-нибудь видит здесь причину?
>
> Выбран неправильный фронтенд для линковки приложений на c++.
> Если хотя бы один объектный файл скомпилирован g++, то и линковать следует
> тоже с помощью g++ а не gcc.
Там какой-то странный апстрим - похоже, такую линковку сделали
специально; файл c_lgcc.cpp содержит ужас следующего вида:
/* Tue Sep 3 18:24:26 CEST 2002
* empirical g++-3.2 helper routines for gcc version 3.2.1 20020830 (Debian prerelease)
*/
void* operator new XMALLOC_CODE()
void* operator new[] XMALLOC_CODE()
void operator delete XFREE_CODE()
void operator delete[] XFREE_CODE()
void* __cxa_pure_virtual=0;
Впрочем, c_lgcc3.cpp ещё лучше:
/* at Wed Dec 11 16:31:42 CET 2002
* This helper is here for gcc-2.95: c_lgcc3.cpp should be compiled by
* gcc-2.95, remaining files are compiled by g++-3.2
*/
void* __cxa_pure_virtual=0;
extern "C" void _ZdlPv (void*);
extern "C" void* _Znwj (unsigned);
extern "C" void _ZdaPv (void*);
extern "C" void* _Znaj (unsigned);
void _ZdlPv XFREE_CODE()
void* _Znwj XMALLOC_CODE()
void _ZdaPv XFREE_CODE()
void* _Znaj XMALLOC_CODE()
И вот такие перлы в README:
Q31. Why not use libjpeg/libtiff/libpng/zlib or any other library with
sam2p?
A31. -- library and .h incompatibilities (the binary would be less portable
across Linux systems)
-- to avoid forced dependencies
-- checkergcc wouldn't work
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: Digital signature
Url : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20080218/3d317836/attachment-0002.bin>
Подробная информация о списке рассылки Sisyphus