May 10, 2011

Gustavo H Montesião de Sousa Gustavo H Montesião de Sousa
Lab Rat
24 posts

Compilling Qt Creator 2.2 on FreeBSD

Page  
1

Hi!

I’m trying to compile Qt Creator 2.2 on a FreeBSD machine. Qt version there is 4.6 and, so, I first compiled successfully Qt 4.7.3 locally on my machine. Attempts to compile Qt Creator 2.1 all failed and, so, I’ve tried to compile v2.2. It compiles smoothly but, when I try to run it, it prints this message:

Failed to load core: /home/gustavo/prog/lib/qtcreator/plugins/Nokia/libCore.so: Cannot load library /home/gustavo/prog/lib/qtcreator/plugins/Nokia/libCore.so: (/home/gustavo/prog/lib/qtcreator/libBotan.so.1: Undefined symbol “_ZTVN5Botan11POSIX_TimerE”)

Does anyone know what may be causing this problem?

Thanks!

31 replies

May 11, 2011

Tobias Hunger Tobias Hunger
Hobby Entomologist
3373 posts

Did you try running c++filt on the symbol name to demangle it and then went on a search for where it is actually defined? You might be needing an additional library or something to get it.

PS: Patches to Qt Creator to fix the build are welcome:-)

May 11, 2011

Gustavo H Montesião de Sousa Gustavo H Montesião de Sousa
Lab Rat
24 posts

Thanks Tobias!

Running c++filt get me this result:

  1. c++filt _ZTVN5Botan11POSIX_TimerE
  2. >> vtable for Botan::POSIX_Timer

So, there’s something in Botan build configuration preventing it to load this class at build time. Fortunately, I’ve noticed Qt Creator 2.0 was showing this same problem, and, for this version, there’s a patch in FreeBSD ports, namely:

  1. --- ./src/libs/3rdparty/botan/src/src.pro.orig 2010-08-24 11:46:09.000000000 +0400
  2. +++ ./src/libs/3rdparty/botan/src/src.pro 2010-11-29 03:49:46.829707166 +0300
  3.  -564,10 +564,6
  4.             timer/gettimeofday/tm_unix.cpp
  5.  }
  6.  
  7. -linux*-g++* {
  8. -    SOURCES += timer/posix_rt/tm_posix.cpp
  9. -}
  10. +SOURCES += timer/posix_rt/tm_posix.cpp
  11.  
  12. -linux*-g++* {
  13. -    LIBS += -lrt
  14. -}
  15. +LIBS += -lrt

This fix the Botan::POSIX_Timer problem. Now I’m able to launch Qt Creator. Nevertheless, another problem has arrived: when I try to load a project file, a dialog appears displaying this message:

No valid qt versions found. Please add a qt version in Tools/Options or via the maintenance tool of the SDK

This is really strange, because the path of my Qt local installation is already set up correctly in Tools/Options (Qt Creator just found it automatically). Any idea what went wrong this time?

May 11, 2011

Tobias Hunger Tobias Hunger
Hobby Entomologist
3373 posts

Does this patch [pastebin.com] fix the build for you?

Is the Qt version marked as valid in Tools->Options->Qt4? My guess is that this worked. Is there any tool chain set up in Tools->Options->Qt4? Does it have a sane ABI (hover it, please)? My guess that this is what is going wrong here. If it indeed is: Can you please provide me with the output of gcc -dumpmachine? Thanks!

May 11, 2011

Gustavo H Montesião de Sousa Gustavo H Montesião de Sousa
Lab Rat
24 posts

Everything in Qt4 configuration seems to be ok:

Name: Qt in PATH
ABI: x86-linux-generic-elf-64bit
mkspec: freebsd-g++
qmake: /home/gustavo/opt/Qt-4.7.3/bin/qmake
Version: 4.7.3
QT_INSTALL_LIBS /home/gustavo/opt/Qt-4.7.3/demos
QT_INSTALL_EXAMPLES /home/gustavo/opt/Qt-4.7.3/examples
QT_INSTALL_DOCS /home/gustavo/opt/Qt-4.7.3/doc
QT_INSTALL_DATA /home/gustavo/opt/Qt-4.7.3/
QT_INSTALL_CONFIGURATION /etc/xdg
QT_INSTALL_IMPORTS /home/gustavo/opt/Qt-4.7.3/imports
QT_INSTALL_TRANSLATIONS /home/gustavo/opt/Qt-4.7.3/translations
QMAKE_MKSPECS /home/gustavo/opt/Qt-4.7.3/mkspecs
QT_INSTALL_PLUGINS /home/gustavo/opt/Qt-4.7.3/plugins
QT_INSTALL_PREFIX /home/gustavo/opt/Qt-4.7.3/
QT_INSTALL_HEADERS /home/gustavo/opt/Qt-4.7.3/include
QT_VERSION 4.7.3
QT_INSTALL_BINS /home/gustavo/opt/Qt-4.7.3/bin

The output of gcc -dumpmachine:
amd64-undermydesk-freebsd

About the patch you provided, I’m gonna testing it to provide you a feedback.

Thanks.

May 11, 2011

Tobias Hunger Tobias Hunger
Hobby Entomologist
3373 posts

Yeap, it does not know “amd64-undermydesk-freebsd”, so it will not recognize that this is something compatible with your freebsd Qt… Plus it obviously assumed your Qt to be linux, too.

So there is quite a bit going wrong. Could you please send me your libQtCore.so (the actual lib, not the symlinks;)? That would be highly appreciated!

May 11, 2011

Gustavo H Montesião de Sousa Gustavo H Montesião de Sousa
Lab Rat
24 posts

How do I send it to you? By mail?

By the way, let me point a related usability bug in Qt Creator: at my work, only some projects are currently using any Qt library. Nonetheless, we want to use Qt Creator as our IDE for every C++ project, regardless of it being Qt based or not. So, for many projects, it’s not necessary that Qt Creator finds any Qt configuration at all. But, with this bug, we are not able to use Qt Creator even for this non-Qt projects, because Qt Creator does require a working Qt configuration for every project.

May 11, 2011

Gustavo H Montesião de Sousa Gustavo H Montesião de Sousa
Lab Rat
24 posts

And the patch you provided fixed the build issue.
Thanks!

May 12, 2011

Tobias Hunger Tobias Hunger
Hobby Entomologist
3373 posts

We do not require a working Qt in Qt Creator. QMake based projects do, since qmake itself is part of Qt and we of course need to find that.

You can use qmake based projects without Qt though, or CMake or generic projects (both of which do not even ask for Qt).

May 12, 2011

Gustavo H Montesião de Sousa Gustavo H Montesião de Sousa
Lab Rat
24 posts

Pretty interesting. I’ve never heard Qt Creator could use another file format besides .pro to set up a project structure. I was thinking one must use a .pro file in order to Qt Creator recognise and index a project tree even for non Qt projects. This is a usefull information.

May 12, 2011

Tobias Hunger Tobias Hunger
Hobby Entomologist
3373 posts

The docs do mention it:

http://doc.qt.nokia.com/qtcreator-2.2/creator-project-cmake.html
http://doc.qt.nokia.com/qtcreator-2.2/creator-project-generic.html

May 12, 2011

Tobias Hunger Tobias Hunger
Hobby Entomologist
3373 posts

Just opened http://bugreports.qt.nokia.com/browse/QTCREATORBUG-4879 about misdetection of freebsd binaires as linux.

This will make it hard to work on freebsd since Creator will not match up the compiler with the Qt version and thus block building:-/

The only workaround I can think of right now is to feed Qt Creator with a compiler that claims via “gcc -dumpmachine” to be targetting Linux. A small script wrapper should do that… then the (now misdetected) compiler will match up with the misdetected Qt and all should be well.

May 12, 2011

Gustavo H Montesião de Sousa Gustavo H Montesião de Sousa
Lab Rat
24 posts

Thank you, Tobias! I’m gonna try this workaround.

May 20, 2011

Belisario Belisario
Lab Rat
7 posts

Hello All,

I’ve compile the qt-creator 2.2.0 and I have the exact same error when trying to run it, i.e.

bash-4.2# bin/qtcreator
Failed to load core: /export/home/Download/Qt-creator/lib/qtcreator/plugins/Nokia/libCore.so: Cannot load library /export/home/Download/Qt-creator/lib/qtcreator/plugins/Nokia/libCore.so: (ld.so.1: qtcreator: fatal: relocation error: file /download/Qt-creator/lib/qtcreator/libBotan.so.1: symbol _ZTVN5Botan11POSIX_TimerE: referenced symbol not found)

bash-4.2# nm -C /download/Qt-creator/lib/qtcreator/libBotan.so.1 | grep _ZTVN5Botan11POSIX_TimerE [_ZTVN5Botan11POSIX_TimerE]
bash-4.2# nm /download/Qt-creator/lib/qtcreator/libBotan.so | grep _ZTVN5Botan11POSIX_TimerE
[7605] | 0| 0|NOTY |GLOB |0 |UNDEF |_ZTVN5Botan11POSIX_TimerE

and well the patch it seems to work for FreeBSD, but I’m working in Solaris 10 and well checking the file

vim /download/qt-creator-2.2.0-src/src/libs/3rdparty/botan/src/timer/gettimeofday/info.txt

realname “Unix Timer”

define TIMER_UNIX

load_on auto
modset unix,beos

<add>
tm_unix.cpp
tm_unix.h
</add>

<os>
aix
beos
cygwin
darwin
freebsd
dragonfly
hpux
irix
linux
netbsd
openbsd
qnx
solaris
tru64
</os>

<requires>
timer
</requires>

Solaris is listed as the “detected” OS, I don’t know how to check if the compiler does a good detection of the OS, I have both libraries, librt et libposix4, which i read were the needed libraries to get all the posix timing routines.

Do you have any ideas on how getting qtcreator to run?

Thanks in advance

May 20, 2011

Gustavo H Montesião de Sousa Gustavo H Montesião de Sousa
Lab Rat
24 posts

Hi, Belisario!

In the file src/libs/3rdparty/botan/src/src.pro, did you try just removing the folowing lines: 287, 289, 571, 573, 575 and 577? If this works, we can do a small change in the patch Tobias provided to fix compilation in Solaris as well.

May 20, 2011

Belisario Belisario
Lab Rat
7 posts

Thanks Gustavo, It runs now, qtcreator, but I have the exact same problemyou had, when trying to create or open a project it says no valid qt version found! but verifying under tools/options/qt4 Qtcreator has automatically taken the qmake on the PATH variable.

And on the shell where i ran the qtcreator i found these 3 different messages repeated:

QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed: Resource temporarily unavailable
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed: Error 0
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed: Error 0
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed: Error 0
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed: Error 0
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed: Error 0
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed: Error 0
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed: No such file or directory

Page  
1

  ‹‹ Qt static build      module machine type ’ARM’ conflicts with target machine type ’X86 ››

You must log in to post a reply. Not a member yet? Register here!