2012-02-17 3 views
3

У меня есть 2 среды сборки с различными версиями MinGW: один настроен для Qt, а другой нет. У обоих, однако, есть статические статические библиотеки Qt (которые в конечном итоге фактически связаны с dll). Проблема в том, что я хочу создать статическую библиотеку в Qt MinGW, а затем включить ее в не Qt MinGW. Я получаю следующие ошибки ссылки, когда я пытаюсь:Как статически связывать библиотеку с другой статической библиотекой?

 
moc_browser.cpp:(.eh_frame+0x11): undefined reference to `___gxx_personality_v0' 
browser.cpp:(.text+0x213): undefined reference to `__Unwind_Resume' 

Я обнаружил, что Qt MinGW динамически ссылки на стандартные библиотеки, и что мне нужно включить опцию -static-libgcc. Однако я не знаю, где его использовать, поскольку я не создаю исполняемый файл, а скорее статическую библиотеку.

ответ

3

Статическая библиотека - это всего лишь коллекция объектных файлов - архив. Вы не создаете его, связываясь, но с программой архивирования (часто ar). Чтобы включить объектные файлы другой статической библиотеки в новую, вы должны найти соответствующие параметры для программы архивации, чтобы объединить их.

+2

см. Http://stackoverflow.com/questions/3821916/how-to-merge-two-ar-static-libraries-into-one/9330267#9330267 для опций 'ar' – osgx

+0

Хороший вызов или перейдите к источник: http://sourceware.org/binutils/docs-2.22/binutils/ar-cmdline.html#ar-cmdline – eriktous

+0

и еще один с libtool: http://stackoverflow.com/a/8170851/196561 – osgx

Смежные вопросы