Статически связанный Xerces 3.0.0 не работает, пока динамические работы на Linux

StackOverflow https://stackoverflow.com/questions/4327421

Вопрос

Так что я пытаюсь статически связать 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top