Люди ! Сделал apt-get install libqt3 тря-ля-ля Перестали компилится готовые проекты ! ШО за дела - что они там на портачили ? Может как-то можно что-то пофиксить ?
А какой QT упал? В смысле, какой версии?
У меня на woody 3.0 KDE3.1 QT3.1.2 все компиляется нормально.
Заметил, правда, один баг: gcc-3.2.3 не компиляет, а 2.95 - нормально.
да я тут обновился и qt и gcc. :((( libqt3c102 - вчера простейший проект не компилился - сегодня копилится. (всмысле я только apt-get библы делал и все) Зато что-то более сложное хрен - похоже с gcc то-же что-то напартачили :(
Теоретически debian может быть виноват в кривой сборке... Не понимаю блин как такое возможно ? Что у нее старый формат библиотеки что новый gcc не может ее линковать ? Тогда какого хрена новый gcc не поддерживает старый формат который поддерживает старый gcc... Крыша у меня уже едет... Qt то-же виновато (либо сборка Debian) вчера оно не линковалось даже 2.95
libqt3c102 должна линковаться с gcc-3.2 и выше (окончание c102 означает новую версию C++ ABI, которая в себя включает новый способ "украшения" имён). Если не линкуется, то это вроде как баг. В дебиане посмотри g++ --version, может случиться, что у тебя установлены обе версии gcc и используется не та.
Это точно, я в woody линкую 2.95, а собираю 3.2.3 - иначе не линкуется.
А пересобирать под новый компилер прийдется не только qt, но и kdelibs - если используется
KDevelop, иначе конфиг ругается на пару либов от kdelibs-dev.
Видите ли, разными версиями компиляторов собраны... Проходили это.
Я теперь проще делаю - сваял тулсу, которая выбирает компилятор - 2.95 или 3.2.3.
Линкуем 2.95, собираем 3.2.3
ABI = application binary interface. Насколько я понимаю (никогда особо не интересовался), он описывает такие вещи как "где находится таблица виртуальных функций", "как помещать в стек параметры", в том числе и "как превратить имя функции в C++ в имя функции для включения в объектник", в общем такие низкоуровневые вещи, в основном предназначенные для того, чтобы программы собранные разными компиляторами C++ могли друг с другом работать.
Дело в том, как g++ "украшает" имена С++:
Пример:
----test.cc----
int
func(int a)
{
return 1;
}
---------------
gcc3 преобразует func в _Z4funci, а gcc2 - в func__Fi
Линковщик же в такие тонкости не вдается (а просто тупо сравнивает
имена) и не знает, что это одна и та же функция.