Building QT Apps on Haiku

Forum thread started by Sikosis on Tue, 2010-08-03 07:04

Hi All,

Just trying to write an app in QT ... actually starting with the Hello World tutorial from here -> http://doc.trolltech.com/4.0/tutorial-t1.html

Problem is, I run qmake -project and then qmake and then make ... and get ...

g++ -Wl,-O1 -Wl,-rpath,/boot/common/lib -o Blank_BFS HelloWorld.o -L/boot/common/lib -lQtGui -L/boot/common/lib -ltracker -lQtCore -lroot
HelloWorld.o: In function `main':
HelloWorld.cpp:(.text+0x27): undefined reference to `QApplication::QApplication(int &, char **, int)'
HelloWorld.cpp:(.text+0x3b): undefined reference to `QString::fromAscii_helper(char const *, int)'
HelloWorld.cpp:(.text+0x55): undefined reference to `QPushButton::QPushButton(QString const &, QWidget *)'
HelloWorld.cpp:(.text+0x7d): undefined reference to `QString::free(QString::Data *)'
HelloWorld.cpp:(.text+0x9b): undefined reference to `QWidget::resize(QSize const &)'
HelloWorld.cpp:(.text+0xbe): undefined reference to `QApplication::exec(void)'
HelloWorld.cpp:(.text+0xcb): undefined reference to `QPushButton::~QPushButton(void)'
HelloWorld.cpp:(.text+0xd9): undefined reference to `QApplication::~QApplication(void)'
HelloWorld.cpp:(.text+0x119): undefined reference to `QString::free(QString::Data *)'
HelloWorld.cpp:(.text+0x13e): undefined reference to `QPushButton::~QPushButton(void)'
HelloWorld.cpp:(.text+0x15e): undefined reference to `QApplication::~QApplication(void)'
HelloWorld.o: In function `QList::free(QListData::Data *)':
HelloWorld.cpp:(.QList::gnu.linkonce.t.free(QListData::Data *) +0x46): undefined reference to `QString::free(QString::Data *)'
HelloWorld.cpp:(.QList::gnu.linkonce.t.free(QListData::Data *) +0x5d): undefined reference to `qFree(void *)'
HelloWorld.o: In function `QList::detach_helper_grow(int, int)':
HelloWorld.cpp:(.QList::gnu.linkonce.t.detach_helper_grow(int, int)+0x37): undefined reference to `QListData::detach_grow(int *, int)'
HelloWorld.o: In function `QList::append(QString const &)':
HelloWorld.cpp:(.QList::gnu.linkonce.t.append(QString const &)+0x5c): undefined reference to `QListData::append(void)'
HelloWorld.cpp:(.QList::gnu.linkonce.t.append(QString const &)+0xa0): undefined reference to `QString::free(QString::Data *)'
HelloWorld.o: In function `QList::detach_helper(int)':
HelloWorld.cpp:(.QList::gnu.linkonce.t.detach_helper(int)+0x2d): undefined reference to `QListData::detach(int)'
HelloWorld.o: In function `QList::operator+=(QList const &)':
HelloWorld.cpp:(.gnu.linkonce.t.__apl__t5QList1Z7QStringRCt5QList1Z7QString+0xa8): undefined reference to `QListData::append2(QListData const &)'
HelloWorld.o: In function `QList::indexOf(QString const &, int) const':
HelloWorld.cpp:(.QList::gnu.linkonce.t.indexOf(QString const &, int) const+0x71): undefined reference to `QString::operator==(QString const &) const'
HelloWorld.o: In function `QList::lastIndexOf(QString const &, int) const':
HelloWorld.cpp:(.QList::gnu.linkonce.t.lastIndexOf(QString const &, int) const+0x7f): undefined reference to `QString::operator==(QString const &) const'
HelloWorld.o: In function `QList::clear(void)':
HelloWorld.cpp:(.QList::gnu.linkonce.t.clear(void)+0x19): undefined reference to `QListData::shared_null'
HelloWorld.o: In function `QList::reserve(int)':
HelloWorld.cpp:(.QList::gnu.linkonce.t.reserve(int)+0x3a): undefined reference to `QListData::realloc(int)'
HelloWorld.o: In function `QDataStream & operator>>(QDataStream &, QList &)':
HelloWorld.cpp:(.gnu.linkonce.t.__rs__H1Z7QString_R11QDataStreamRt5QList1ZX01_R11QDataStream+0x30): undefined reference to `QDataStream::operator>>(int &)'
HelloWorld.cpp:(.gnu.linkonce.t.__rs__H1Z7QString_R11QDataStreamRt5QList1ZX01_R11QDataStream+0x5a): undefined reference to `QString::shared_null'
HelloWorld.cpp:(.gnu.linkonce.t.__rs__H1Z7QString_R11QDataStreamRt5QList1ZX01_R11QDataStream+0x73): undefined reference to `operator>>(QDataStream &, QString &)'
HelloWorld.cpp:(.gnu.linkonce.t.__rs__H1Z7QString_R11QDataStreamRt5QList1ZX01_R11QDataStream+0x8f): undefined reference to `QDataStream::atEnd(void) const'
HelloWorld.cpp:(.gnu.linkonce.t.__rs__H1Z7QString_R11QDataStreamRt5QList1ZX01_R11QDataStream+0xaf): undefined reference to `QString::free(QString::Data *)'
HelloWorld.cpp:(.gnu.linkonce.t.__rs__H1Z7QString_R11QDataStreamRt5QList1ZX01_R11QDataStream+0xd5): undefined reference to `QString::free(QString::Data *)'
HelloWorld.cpp:(.gnu.linkonce.t.__rs__H1Z7QString_R11QDataStreamRt5QList1ZX01_R11QDataStream+0x10d): undefined reference to `QString::free(QString::Data *)'
HelloWorld.o: In function `QDataStream & operator<<(QDataStream &, QList const &)':
HelloWorld.cpp:(.gnu.linkonce.t.__ls__H1Z7QString_R11QDataStreamRCt5QList1ZX01_R11QDataStream+0x2d): undefined reference to `QDataStream::operator<<(int)'
HelloWorld.cpp:(.gnu.linkonce.t.__ls__H1Z7QString_R11QDataStreamRCt5QList1ZX01_R11QDataStream+0x58): undefined reference to `operator<<(QDataStream &, QString const &)'
HelloWorld.o: In function `QVector::free(QVectorTypedData *)':
HelloWorld.cpp:(.QVector::gnu.linkonce.t.free(QVectorTypedData *) +0x42): undefined reference to `QVectorData::free(QVectorData *, int)'
HelloWorld.o: In function `QVector::realloc(int, int)':
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0x78): undefined reference to `QVectorData::allocate(int, int)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0x86): undefined reference to `qBadAlloc(void)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0x93): undefined reference to `qBadAlloc(void)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0xcd): undefined reference to `QVectorData::reallocate(QVectorData *, int, int, int)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0xdb): undefined reference to `qBadAlloc(void)'
HelloWorld.o: In function `QVector::QVector(int)':
HelloWorld.cpp:(.QVector::gnu.linkonce.t.(int)+0x37): undefined reference to `QVectorData::allocate(int, int)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.(int)+0x45): undefined reference to `qBadAlloc(void)'
HelloWorld.o: In function `QVector::free(QVectorTypedData *)':
HelloWorld.cpp:(.QVector::gnu.linkonce.t.free(QVectorTypedData *) +0x42): undefined reference to `QVectorData::free(QVectorData *, int)'
HelloWorld.o: In function `QVector::realloc(int, int)':
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0x77): undefined reference to `QVectorData::allocate(int, int)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0x85): undefined reference to `qBadAlloc(void)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0x93): undefined reference to `qBadAlloc(void)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0xca): undefined reference to `QVectorData::reallocate(QVectorData *, int, int, int)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0xd8): undefined reference to `qBadAlloc(void)'
HelloWorld.o: In function `QVector::QVector(int)':
HelloWorld.cpp:(.QVector::gnu.linkonce.t.(int)+0x36): undefined reference to `QVectorData::allocate(int, int)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.(int)+0x44): undefined reference to `qBadAlloc(void)'
HelloWorld.o: In function `QVector::free(QVectorTypedData *)':
HelloWorld.cpp:(.QVector::gnu.linkonce.t.free(QVectorTypedData *) +0x2b): undefined reference to `QVectorData::free(QVectorData *, int)'
HelloWorld.o: In function `QVector::realloc(int, int)':
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0x51): undefined reference to `QVectorData::allocate(int, int)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0x5f): undefined reference to `qBadAlloc(void)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0x6b): undefined reference to `qBadAlloc(void)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0xdd): undefined reference to `QVectorData::reallocate(QVectorData *, int, int, int)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0xeb): undefined reference to `qBadAlloc(void)'
HelloWorld.cpp:(.QVector::gnu.linkonce.t.realloc(int, int)+0x152): undefined reference to `qMemSet(void *, int, unsigned long)'
HelloWorld.o: In function `QList::free(QListData::Data *)':
HelloWorld.cpp:(.QList::gnu.linkonce.t.free(QListData::Data *) +0x41): undefined reference to `QTouchEvent::TouchPoint::~TouchPoint(void)'
HelloWorld.cpp:(.QList::gnu.linkonce.t.free(QListData::Data *) +0x59): undefined reference to `qFree(void *)'
HelloWorld.o: In function `QList::detach_helper(int)':
HelloWorld.cpp:(.QList::gnu.linkonce.t.detach_helper(int) +0x2d): undefined reference to `QListData::detach(int)'
HelloWorld.cpp:(.QList::gnu.linkonce.t.detach_helper(int) +0x7f): undefined reference to `QTouchEvent::TouchPoint::TouchPoint(QTouchEvent::TouchPoint const &)'
HelloWorld.cpp:(.QList::gnu.linkonce.t.detach_helper(int) +0x10a): undefined reference to `QTouchEvent::TouchPoint::~TouchPoint(void)'
HelloWorld.cpp:(.QList::gnu.linkonce.t.detach_helper(int) +0x1bd): undefined reference to `qFree(void *)'
collect2: ld returned 1 exit status
make: *** [Blank_BFS] Error 1

Any ideas ?

Comments

Re: Building QT Apps on Haiku

Re: Building QT Apps on Haiku

I don't recall doing anything special to compile qt applications but been couple weeks since I used Haiku.

Maybe can't find qt directory. Try setting QTDIR. Linux example below:
qmake -project
qmake
QTDIR=/usr/share/qt3/ make

Change it to Haiku's QTDIR.

I will boot Haiku in next couple of days to see if I gave a QTDIR or anything else to get qt applications to compile for me.

Re: Building QT Apps on Haiku

I was having the same problem until I switched to gcc4 using

setgcc gcc4

. Have you switched to gcc4?