Ошибка компоновщика, связанная с boost_lock

#c #boost #linker-errors #archlinux

#c #повышение #компоновщик-ошибки #archlinux ( архлинукс )

Вопрос:

Я работаю над игровым движком http://ducttape-dev.org это использует boost в качестве одной из зависимостей. Однажды, когда я писал тестовое приложение, связанное с моим игровым движком, экструдер OgreProcedural выдал ошибку такого типа. После устранения неполадок и поиска в Google в течение пары часов я выполнил обновление системы (я использую archlinux) и перестроил все зависимости. Перезагрузился, все еще получил ту же ошибку. Попытался перестроить движок и получил ошибку компоновщика. Каждый раз, когда я пытаюсь связать движок, он выдает эту ошибку http://pastebin.com/PGH25Yuy .

это только что произошло в libMyGUI, но вместо этого я получил ссылку на файлы в движке, и все в формате «(материал об ошибках), на который ссылается раздел (больше ошибок) [невиртуальный переход к (некоторому файлу) из (некоторого файла), определенного в отброшенном разделе (некоторый файл)». Я могу создать MyGUI из исходного кода и не получить ошибок, я могу создать boost из исходного кода и не получить ошибок. Я не знаю, как устранить эту проблему. Я даже не знаю, что это значит. Буду признателен за любую помощь (даже если вы могли бы просто сказать мне, что это за ошибка).

archlinux x64, amd64 athlon x2, 5 ГБ оперативной памяти, gcc 4.6.2, binutils 2.21.1, boost 1.47.0

Комментарии:

1. Я разочарован тем, что «Экструдер OgreProcedural» означает, что движок использует Ogre3D, а не гораздо более интересную ситуацию игры, которая процедурно выдавливает людоедов. 😉

2. О, даже не заставляйте меня начинать с матриц троллей. Нам пришлось вырезать их, по крайней мере, до тех пор, пока мы не достигли 0.4

3. Способ указать, что проблема была решена, — это принять ответ, а не редактировать вопрос.

Ответ №1:

Ранее у меня была аналогичная ошибка после обновления до gcc 4.6.2. Странным было то, что понижение рейтинга всех пакетов (gcc, libtool, boost) не решило проблему. Проблема, по-видимому, заключается в смешанной компиляции: я обновил все пакеты (новейшие версии repo), затем выбросил старые данные компиляции (make clean) и перестроил все это. Тогда это сработало.

Вот аналогичная ошибка, которую я получил:

.text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorISt12out_of_rangeEEED2Ev’ упоминается в разделе .text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorISt12out_of_rangeEEED1Ev[boost::exception_detail:: clone_impl >::~clone_impl()]’ из ./source/gepetto/.libs/libgepetto.a(libslab_la-layout.o): определено в отброшенном разделе .text._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorISt12out_of_rangeEEED2Ev[_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorISt12out_of_rangeEEED5Ev]’ из ./source/gepetto/.libs/libgepetto.a(libslab_la-layout.o)

Комментарии:

1. Пытался переустановить gcc, binutils, libtool, boost, boost-библиотеки, а также пакеты ogre и mygui и make clean, но я все еще получаю ошибку компоновщика. Я собираюсь попробовать перестроить mygui и, возможно, все другие пакеты, на случай, если это проблема с предварительно скомпилированными ячейками.