PDA

Просмотр полной версии : ошибка компиляции (undefined reference to `__sync_add_and_fetch_4')


maximt
16.11.2010, 08:53
сервер на mandriva 2009.0
Linux 2.6.27 i686 Intel(R) Pentium(R) Dual CPU E2200
версия gcc 4.3.2

компилирую по гайду, на последней (10721) столкнулся с проблемой:
../shared/libmangosshared.a(Threading.o): In function `ACE_Atomic_Op_GCC<long>::operator--()':
/usr/servers/mangos/compile/objdir/src/shared/../../../dep/ACE_wrappers/ace/Atomic_Op_GCC_T.inl:49: undefined reference to `__sync_sub_and_fetch_4'
/usr/servers/mangos/compile/objdir/src/shared/../../../dep/ACE_wrappers/ace/Atomic_Op_GCC_T.inl:49: undefined reference to `__sync_sub_and_fetch_4'
/usr/servers/mangos/compile/objdir/src/shared/../../../dep/ACE_wrappers/ace/Atomic_Op_GCC_T.inl:49: undefined reference to `__sync_sub_and_fetch_4'
/usr/servers/mangos/compile/objdir/src/shared/../../../dep/ACE_wrappers/ace/Atomic_Op_GCC_T.inl:49: undefined reference to `__sync_sub_and_fetch_4'
../../dep/ACE_wrappers/ace/.libs/libACE.so: undefined reference to `__sync_add_and_fetch_4'
../../dep/ACE_wrappers/ace/.libs/libACE.so: undefined reference to `__sync_fetch_and_sub_4'
collect2: ld returned 1 exit status


пробовал добавить флаги ../configure CFLAGS="-march=i686" ACE_CFLAGS="-march=i686"
не помогло..

Йоха
16.11.2010, 13:06
это ошибка не компилятора, а линковщика. Проверь настройки/пути наличие библиотек от ACE, возможно сам ACE сперва надо собрать.

maximt
17.11.2010, 03:27
__sync_add_and_fetch_4 и __sync_fetch_and_sub_4 это функции gcc

организовал простенький тест
# cat test.c
int main()
{
int i = 3;
int j = __sync_add_and_fetch(&i, 1);
return 0;
}



# gcc test.c
/tmp/cccOSsgM.o: In function `main':
test.c:(.text+0x27): undefined reference to `__sync_add_and_fetch_4'
collect2: выполнение ld завершилось с кодом возврата 1
#


с ключом ошибок не выдает

# gcc -march=i686 test.c
#


победил с помощью
../configure CXXFLAGS="-march=i686" ...

WildLynx
16.01.2011, 11:04
OS - Mandriva 2010 x86

загрузка - как обычно
autoreconf -fvi
configure - только с путями

при сборке make выдаёт ошибку:


../shared/libmangosshared.a(Threading.o): In function `ACE_Atomic_Op_GCC<long>::operator--()':
/home/lynx/_MANGOS/dst/z1245/objects/src/shared/../../../dep/ACE_wrappers/ace/Atomic_Op_GCC_T.inl:49: undefined reference to `__sync_sub_and_fetch_4'
/home/lynx/_MANGOS/dst/z1245/objects/src/shared/../../../dep/ACE_wrappers/ace/Atomic_Op_GCC_T.inl:49: undefined reference to `__sync_sub_and_fetch_4'
/home/lynx/_MANGOS/dst/z1245/objects/src/shared/../../../dep/ACE_wrappers/ace/Atomic_Op_GCC_T.inl:49: undefined reference to `__sync_sub_and_fetch_4'
/home/lynx/_MANGOS/dst/z1245/objects/src/shared/../../../dep/ACE_wrappers/ace/Atomic_Op_GCC_T.inl:49: undefined reference to `__sync_sub_and_fetch_4'
../../dep/ACE_wrappers/ace/.libs/libACE.so: undefined reference to `__sync_add_and_fetch_4'
../../dep/ACE_wrappers/ace/.libs/libACE.so: undefined reference to `__sync_fetch_and_sub_4'
collect2: ld returned 1 exit status
make[3]: *** [mangos-realmd] Ошибка 1
make[3]: Leaving directory `/home/lynx/_MANGOS/dst/z1245/objects/src/realmd'
make[2]: *** [all-recursive] Ошибка 1
make[2]: Leaving directory `/home/lynx/_MANGOS/dst/z1245/objects/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Leaving directory `/home/lynx/_MANGOS/dst/z1245/objects'
make: *** [all] Ошибка 2

Помогите, пожалуйста понять, в чём дело.

Кстати, в последней (z1245), поправили наконец то патч для scriptdevzero - и тут же поломали - он пишет в configure.ac строчку
scriptdev2.conf.dist
, а файл на самом деле существует и упоминается в исходниках по старому - scriptdevzero.conf.dist.in

Vladimir
16.01.2011, 14:56
проблемы с линоковкой ACE может быть стоит спрашивать в разделах для master-ветки - всеравно никакой разницы нет в использовании ACE в разных ветках мангоса. Выглядит как проблема ACE для конкретной платформы. Может погуглить стоит "ACE Mandriva"

MaS0n
16.01.2011, 15:13
имхо стоит обратить внимание в низ страницы, там есть фрейм с названием "Похожие темы" и такая ошибка уже обсуждалась, и вроде бы там даже было найдено решение :)









------------------
tempura
Слил ветки

WildLynx
16.01.2011, 21:13
Прошу прощения за повторяющуюся тему. Я за пределами раздела mangoszero не глянул - привык смотреть только там, так как проект вроде обособленный.

Добавление ключа в ./configure ..... не сработало, выдаёт ошибку
Обошел, назначив переменной окружения CXXFLAGS то же значение

вроде помогло, но тут же вылезло вот это:

http://www.ru-mangos.ru/showthread.php?t=989

далее в той теме.