четверг, 26 февраля 2009 г.

Бывает же!

Портировал сегодня Mxx_ru под MacOS X. Столкнулся с одной странностью. Запускаю полный набор тестов (через rake test) и один из них обламывается. Линкер не находит функцию a() в библиотеке MyA. Начинаю разбираться именно с этим тестом. А в тесте как раз и строится библиотека MyA с единственной функцией a(). Но тест не работает.

Странно, думаю. Смотрю, а в библиотеке одна функция - A(). Да именно с заглавной буквы. Заглядываю в исходный файл - точно, объявляется функция A(), с заглавной буквы:

#include <iostream>
void A() { std::cout << "a()" << std::endl; }

Ну, думаю, какие проблемы? Исправляю, запускаю тест в автономе - все нормально. Потом опять запускаю весь test suite. БАХ! Функция a() опять не найдена. Заглядываю в исходный файл - опаньки, а функция a() опять с заглавной буквы! Что за дела?...

Исправляю опять. Запускаю один тест. Все нормально. Запускаю весь test suite - ошибка и имя функции опять оказывается с заглавной буквы.

Почему это происходит и в чем причина - не знаю. Не было времени, да и желания разбираться. Но такого я раньше никогда не видел. Ведь ни Mxx_ru, ни компилятор даже не открывают исходных файлов на запись. А тут оказывается, что одна буква в одном файле таинственным образом меняется. Чудеса!

PS. Работал на 13" MacBook-е. Впечатления неоднозначные. Убило отсутствие клавиши Del. Зато очень порадовало, что в стандарной версии MacOS X сразу был vim!

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