LINUX.ORG.RU

QT и Debian


0

0

Люди ! Сделал apt-get install libqt3 тря-ля-ля Перестали компилится готовые проекты ! ШО за дела - что они там на портачили ? Может как-то можно что-то пофиксить ?

anonymous

А какой QT упал? В смысле, какой версии?
У меня на woody 3.0 KDE3.1 QT3.1.2 все компиляется нормально.
Заметил, правда, один баг: gcc-3.2.3 не компиляет, а 2.95 - нормально.

dpkg ★★★★
()

да я тут обновился и qt и gcc. :((( libqt3c102 - вчера простейший проект не компилился - сегодня копилится. (всмысле я только apt-get библы делал и все) Зато что-то более сложное хрен - похоже с gcc то-же что-то напартачили :(

anonymous
()

> gcc-3.2.3 не компиляет, а 2.95

Может не линкует? ;)

anonymous
()

да не линкует - куча undefined reference :((( это при том что проект не менялся ! Накрутили блин !

anonymous
()
Ответ на: комментарий от anonymous

Все претезии к троллям (за выбор С++) и к авторам gcc (за постоянные смены украшательства приплюснутых имен). Debian тут, очевидно, ни при чем.

Нужно пересобрать и саму Qt и все, что от нее зависит одной той же версией gcc.

anonymous
()

да за ночь они поправили вроде как библу - но линкуется она только gcc 2.95...

anonymous
()

Теоретически debian может быть виноват в кривой сборке... Не понимаю блин как такое возможно ? Что у нее старый формат библиотеки что новый gcc не может ее линковать ? Тогда какого хрена новый gcc не поддерживает старый формат который поддерживает старый gcc... Крыша у меня уже едет... Qt то-же виновато (либо сборка Debian) вчера оно не линковалось даже 2.95

anonymous
()

libqt3c102 должна линковаться с gcc-3.2 и выше (окончание c102 означает новую версию C++ ABI, которая в себя включает новый способ "украшения" имён). Если не линкуется, то это вроде как баг. В дебиане посмотри g++ --version, может случиться, что у тебя установлены обе версии gcc и используется не та.

justme
()

Что за C++ ABI ? Нельзя ли по-подробней ?

anonymous
()

все правильно, дебиан переезжает (в тестинг) на gcc-3.2.x, в данном случае 3.2.3

libqt3 так и осталось собрано gcc-2.95.4 (можно посмотреть apt-cache show libqt3)

то-есть дефолтный компилер g++ это gcc-3.2.3, если вам нужно именно gcc-2.95.4 для либы то так и пишите g++-2.95, или пересобирайте либу gcc-3.2

anonymous
()

Это точно, я в woody линкую 2.95, а собираю 3.2.3 - иначе не линкуется.
А пересобирать под новый компилер прийдется не только qt, но и kdelibs - если используется
KDevelop, иначе конфиг ругается на пару либов от kdelibs-dev.
Видите ли, разными версиями компиляторов собраны... Проходили это.
Я теперь проще делаю - сваял тулсу, которая выбирает компилятор - 2.95 или 3.2.3.
Линкуем 2.95, собираем 3.2.3

dpkg ★★★★
()

ABI = application binary interface. Насколько я понимаю (никогда особо не интересовался), он описывает такие вещи как "где находится таблица виртуальных функций", "как помещать в стек параметры", в том числе и "как превратить имя функции в C++ в имя функции для включения в объектник", в общем такие низкоуровневые вещи, в основном предназначенные для того, чтобы программы собранные разными компиляторами C++ могли друг с другом работать.

justme
()

Дык я так и не врубился - из-за чего это ? В gcc выкинули поддержку какого-то формата библиотек а qt собрана именно в этом формате ?!

anonymous
()

Дело в том, как g++ "украшает" имена С++:

Пример:

----test.cc----
int
func(int a)
{
    return 1;
}
---------------

gcc3 преобразует func в _Z4funci, а gcc2 - в func__Fi

Линковщик же в такие тонкости не вдается (а просто тупо сравнивает 
имена) и не знает, что это одна и та же функция.

anonymous
()

Дык это типа... Что-ж теперь новым gcc нельзя вообще никакие старые библиотеки линковать ?!

anonymous
()

плюсовые очевидно нельзя.

anonymous
()

вот тебе, бабушка, и open source :)
намутили-намудрили - ан вместе-то и не работает :)


Дедуля

anonymous
()

2Дедуля - расслабся ! open source на то и open source что если проблемы есть - исправят, ГАРАНТИРОВАННО !

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.