Ошибка компиляции с ACE lib на 64-битной Slackware 14.2

Я пытаюсь скомпилировать ACE lib, но у меня есть ошибки компиляции.

Моя система Linux Slackware 14.2 64 бит

Lib — ACE версии 6.1.4 (версия, которую мне нужно скомпилировать)

Прежде чем опубликовать это, я выполнил все шаги для построения ACE из Веб-сайт ACE.

Как скомпилировать эту библиотеку?

Это ошибка:

In file included from /home/cyneo/Downloads/ACE_wrappers/ace/OS_NS_Thread.h:32,
from /home/cyneo/Downloads/ACE_wrappers/ace/Guard_T.h:26,
from /home/cyneo/Downloads/ACE_wrappers/ace/Free_List.cpp:7,
from /home/cyneo/Downloads/ACE_wrappers/ace/Free_List.h:142,
from /home/cyneo/Downloads/ACE_wrappers/ace/Malloc_T.h:26,
from /home/cyneo/Downloads/ACE_wrappers/ace/Local_Name_Space.h:20,
from Local_Name_Space.cpp:3:
/home/cyneo/Downloads/ACE_wrappers/ace/os_include/os_sched.h:47:6: error: conflicting declaration ‘typedef struct cpu_set_t cpu_set_t’
} cpu_set_t;
^~~~~~~~~

In file included from /usr/include/sched.h:44,
from /usr/include/pthread.h:23,
from /home/cyneo/Downloads/ACE_wrappers/ace/os_include/os_pthread.h:51,
from /home/cyneo/Downloads/ACE_wrappers/ace/OS_NS_Thread.h:31,
from /home/cyneo/Downloads/ACE_wrappers/ace/Guard_T.h:26,
from /home/cyneo/Downloads/ACE_wrappers/ace/Free_List.cpp:7,
from /home/cyneo/Downloads/ACE_wrappers/ace/Free_List.h:142,
from /home/cyneo/Downloads/ACE_wrappers/ace/Malloc_T.h:26,
from /home/cyneo/Downloads/ACE_wrappers/ace/Local_Name_Space.h:20,
from Local_Name_Space.cpp:3:
/usr/include/bits/cpu-set.h:42:3: nota: previous declaration as ‘typedef struct cpu_set_t cpu_set_t’
} cpu_set_t;

In file included from /home/cyneo/Downloads/ACE_wrappers/ace/TSS_T.h:261,
from /home/cyneo/Downloads/ACE_wrappers/ace/Singleton.h:24,
from /home/cyneo/Downloads/ACE_wrappers/ace/Service_Gestalt.h:30,
from /home/cyneo/Downloads/ACE_wrappers/ace/Service_Object.h:27,
from /home/cyneo/Downloads/ACE_wrappers/ace/Naming_Context.h:25,
from /home/cyneo/Downloads/ACE_wrappers/ace/Local_Name_Space_T.h:25,
from /home/cyneo/Downloads/ACE_wrappers/ace/Local_Name_Space.h:128,
from Local_Name_Space.cpp:3:
/home/cyneo/Downloads/ACE_wrappers/ace/TSS_T.cpp: En la función miembro ‘void ACE_TSS_Guard<ACE_LOCK>::init_key()’:
/home/cyneo/Downloads/ACE_wrappers/ace/TSS_T.cpp:357:39: error: no matching function for call to ‘ACE_Thread::keycreate(ACE_thread_key_t*, void (*)(void*), void*)’
(void *) this);
^
make[1]: *** [/home/cyneo/Downloads/ACE_wrappers/include/makeinclude/rules.local.GNU:189: .shobj/Local_Name_Space.o] Error 1

Я нашел это, но я не могу работать на меня:

https://bugs.gentoo.org/638606

https://638606.bugs.gentoo.org/attachment.cgi?id=532828

Редактировать:

Я пытался скомпилировать ACE 6.5.0 тоже, но я получаю эту ошибку:

during GIMPLE pass: wrestrict
En la función miembro ‘virtual int ACE_Configuration_Heap::open_section(const ACE_Configuration_Section_Key&, const ACE_TCHAR*, int, ACE_Configuration_Section_Key&)’:
en pp_format, en pretty-print.c:1378
ACE_Configuration_Heap::open_section (const ACE_Configuration_Section_Key& base,

0

Решение

Наконец, я скомпилировал ACE 6.5.0 для Slackware 14.2 64 бит.
Нужно добавить некоторые параметры в «ACE_wrappers / include / makeinclude / platform_macros.GNU»:

INSTALL_PREFIX=/usr
INSTALL_LIB=lib64
stl=1
gl=1
ssl=1
buildbits=64
dynamic_loader=1
insure=0
optimize=0
static_stdlibs=0
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
1

Другие решения

Эта версия ACE является древней, обновляется до ACE 6.5.0 исправляет это.

0

У меня была такая же проблема с ACE, но у меня не было возможности ее обновить. Мне удалось решить проблему с конфликтующими объявлениями, добавив в ace / config.h следующий файл и перекомпилировав ACE.

#ifndef __cpu_set_t_defined
#define __cpu_set_t_defined
#endif //!__cpu_set_t_defined

Вы можете спросить, почему это работает? Ну, если вы получите эту ошибку, это означает, что glibc объявил cpu_set_t но это не определило __cpu_set_t_defined, который ожидал ACE. Поэтому ACE попытался объявить cpu_set_t а также и ошибка возникает.
Итак, определяя __cpu_set_t_definedСкажи АСЕ не объявлять __cpu_set_t_defined снова.

Но имейте в виду, что это всего лишь обходной путь, и его следует использовать, только если у вас нет возможности обновить ACE.

Надеюсь это поможет!

0
По вопросам рекламы [email protected]