Статически связанный Xerces 3.0.0 не работает, пока динамические работы на Linux
-
29-09-2019 - |
Вопрос
Так что я пытаюсь статически связать Xerces 3.0.0 на Linux.
Я уже сделал это с динамической ссылкой, и это работает, но чтобы избежать зависимости, я хочу сделать это статически.
Я изменил все файлы марки, чтобы сделать это соответствующим образом
-Wl,-Bstatic ... -lxerces-c -Wl,-Bdynamic ...
Но я получаю ошибки:
undefined reference to '__ctype_b'
undefined reference to '__ctype_tolower'
undefined reference to '__ctype_toupper'
Я исправил тех, кто был найден метод грубой силы здесь
Но были еще один тип ошибок, связанных с Xerces.
Xerces/3.0.0/lib/libxerces-c.a(PosixMutexMgr.o):
In function `xercesc_3_0::PosixMutexMgr::create(xercesc_3_0::MemoryManager*)':
PosixMutexMgr.cpp:(.text+0x84): undefined reference to `pthread_mutexattr_init'
PosixMutexMgr.cpp:(.text+0x95): undefined reference to `pthread_mutexattr_settype'
PosixMutexMgr.cpp:(.text+0xad): undefined reference to `pthread_mutexattr_destroy'
PosixMutexMgr.cpp:(.text+0xd0): undefined reference to `pthread_mutexattr_destroy'
Похоже, что ему не хватает Pthread, поэтому я попытался добавить его, но это не решает проблему ... эти ошибки исходят от Xerces ... и динамическая версия работает, отличная статичная, не сбои.
Любые идеи???
Спасибо
Решение
Динамическая версия Xerces будет иметь зависимости от Libpthread, которые гарантируют, что загрузчик заберут правильную библиотеку.
Указание Libphtread в вашей командной строке Linker должно исправить эти неразрешенные внешние внешние виды, вы (а) поместили в нужное место в командной строке в качестве вопроса упорядочения и (b) пробовали как статические, так и динамические версии Libpthread?
Другие советы
Порядок либеральных вопросов для линкера для линкера попробуйте изменить порядок для Pthread Lib.