LINUX.ORG.RU

Какие-то прямо чудеса при сборке библиотеки. Как найти ошибку.

 , ,


0

2

Заранее извиняюсь за сумбур. Очень странная проблема.

Есть библиотека виджетов для Motif/X11. Собирается с помощью autotools. В составе пакета сами исходники библиотеки и примеры/тесты. Все собиралось и работало. Некоторое время назад переделал в библиотеке кое-что и добавил новый виджет. Соответственно добавил 3 теста/примера. Один из тестов вываливается с ошибкой.

Ошибка представляет собой сообщение о том, что неверно указано окно, для которого запрошено изменение каких-то параметров. Аналогичные ошибки я встречал неоднократно, когда при сборке приложения для Motif/Xt/X11 библиотеки указываются в некорректном порядке. Но у меня при сборке тестов в этом смысле все правильно. Это стало склонять меня к подозрению, что что-то не так с линковкой. К тому же другие тесты работали.

Поставил обработчик ошибки. Увидел, что после 3 ошибок выскакивает сообщение, что не определен код метода realise, и идет завершение. Два теста из трех работают. Все используют один и тот же виджет. И в тестах отличий по минимуму. Достаточно в неработающий тест добавить при создании виджета определение ресурса, например, изменить размер рамки, и тест отрабатывает.

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

Тогда я взял и написал для сборки всего этого простой makefile. С ним все собирается и работает. Кинул собранную библиотеку в проект с autotools. Пересобрал тесты. Все тесты работают.

Что делать непонятно. Даже не знаю, что еще проверить, или поковырять. Что посоветуете?