November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Sunday, February 6th, 2005 07:57 pm
при попытке сборки простейшей qt'шной программы ld вылетает с дикими криками о том, что у него куча неразрешенных ссылок.
Проверяю - библиотека есть. Маршрут к ней есть. При линковке она явно подключается. Имена эти в библиотеке тоже вроде есть. Ан не находятся.

Но я же точно помню, что я ее собирал. Пошел смотреть, как я это делал. Ну да, так и есть - её надо собирать 2.95-м компилятором. 3.3 не катит. Абыдна, да.
Sunday, February 6th, 2005 05:07 pm (UTC)
либу пересобери 3.3
Sunday, February 6th, 2005 05:11 pm (UTC)
Ага, делать мне больше нечего. Я ее из пакета ставил. Причем пакет этот притянул за собой gcc-3.2. А вовсе не 2.95. Теперь у меня в системе стоит три разных версии компилятора. Щастье, блин.
Sunday, February 6th, 2005 05:15 pm (UTC)
покажи чего говорит - у меня была похожая проблема когда собирал тестовое qt приложение.
там какая-то мелочь была. Ты кстати каталог как назвал? и собираешь ты как qt рекомендует?
Sunday, February 6th, 2005 05:26 pm (UTC)
Какой еще каталог?
Я собираю qdir - элементарное графическое приложение, которое умеет ходить по каталогам, и когда я выберу нужный файл, выдает его имя на stdout. Им lve пользуется для выбора файлов.
2.95 компилятор снял все проблемы - всё собралось без единого предупреждения.
Sunday, February 6th, 2005 06:20 pm (UTC)
у меня тестовое приложение нормально собиралось с 3.3, после того как сделал все как qt просил при сборке.
ладно решил и хорошо.
Sunday, February 6th, 2005 05:28 pm (UTC)
$ make
g++ -c -Wall -I/usr/include/qt -o qdir.o qdir.cpp
g++ -L/usr/lib -lqt -o qdir qdir.o
qdir.o(.text+0x29): In function `main':
: undefined reference to `QApplication::QApplication[in-charge](int&, char**)'
qdir.o(.text+0x68): In function `main':
: undefined reference to `QFileDialog::QFileDialog[in-charge](QWidget*, char const*, bool)'
qdir.o(.text+0xb8): In function `main':
: undefined reference to `QDir::currentDirPath()'
qdir.o(.text+0xd1): In function `main':
: undefined reference to `QString::QString[in-charge](char const*)'
qdir.o(.text+0xfb): In function `main':
: undefined reference to `QApplication::~QApplication [in-charge]()'
qdir.o(.text+0x12a): In function `main':
: undefined reference to `QString::QString[in-charge](char const*)'
ну и далее в том же духе
Sunday, February 6th, 2005 06:45 pm (UTC)
какой-какой у тебя дистрибутив? :)
Sunday, February 6th, 2005 07:00 pm (UTC)
debian testing. А что?
Sunday, February 6th, 2005 07:02 pm (UTC)
"та же фигня, Ромео".
а я уж хотел по редхатоидам проехаться :)
Sunday, February 6th, 2005 07:04 pm (UTC)
так это, очевидно, не проблема конкретного дистрибутива. Это библиотека, собранная одной версией компилятора, не линкуется с объектным модулем, собранным другой версией.
Sunday, February 6th, 2005 07:06 pm (UTC)
ну понятно, что проблемаа в GCC на самом деле.
вернее, в смене правил name mangling.
Monday, February 7th, 2005 06:42 am (UTC)
это проблема отрасли в целом :)

правильных (дающих положительный и устойчивый результат) решений несколько, но в каждом будет пункт "собирать всё одним копилятором". Каким именно из трех - в зависимости от.

p.s. совсем не удивительно для debian testing.
Monday, February 7th, 2005 06:44 am (UTC)
у редхатоидов, такого бардака нет :)
только вчера обновлялся, некоторые библиотеки yum update притянул в двух видах some_liba-new.ver, compat-come_liba-old.ver

Как нетрудно будет догадаться, compat-* никакой компилятор не подцепит, ибо к ней хидеры и прочие девелоперские штуки не полождены - сугубо бинарники, наобходимые для запуска старых программ.

Плюс к этому - один компилятор на дистрибутив.