Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. Building Qt 5.5.0 enterprise static on Linux, can't find xcb plugin at runtime
Forum Updated to NodeBB v4.3 + New Features

Building Qt 5.5.0 enterprise static on Linux, can't find xcb plugin at runtime

Scheduled Pinned Locked Moved Unsolved Installation and Deployment
23 Posts 3 Posters 7.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Alan DuBoff
    wrote on last edited by
    #8

    I'm doing that, but it's in my home directory, and on the build server it's in the same location but in his home dir. I guess I could change them to add $HOME in the la files.

    I've ran some scripts that was supposed to change the names, but didn't realize exactly what it was changing. Now I kind of understand.

    http://linuxfromscratch.org/blfs/view/svn/x/qt5.html

    That is not a problem, I can peel that out completely as I account for the link path (-L) in my project file. I need to strip out those added Qt libs as I'm linking in static.

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by SGaist
      #9

      The paths are also hardcoded in qmake so you have to patch the binaries to make it work when relocating or use a qt.conf file to tell Qt where it's located

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      A 1 Reply Last reply
      0
      • SGaistS SGaist

        The paths are also hardcoded in qmake so you have to patch the binaries to make it work when relocating or use a qt.conf file to tell Qt where it's located

        A Offline
        A Offline
        Alan DuBoff
        wrote on last edited by Alan DuBoff
        #10

        @SGaist Ok, I rebuilt my static and placed it in /opt so that it would be common for all machines.

        I do have my static build, but had to strip out some of the depends in libQt5WebKit.prl, libQt5WebKitWidgets.prl and libQt5WebKitWidgets.la for WebKit1, WebCore, ANGLE, leveldb, JavaScriptCore and WTF.

        I believe those are statically compiled in the WebKit and WebKitWidgets libraries. I can link my shared library after doing so.

        The problem I run into is that it seems uic is not producing my headers and I suspect moc needs to run on some stuff also.

        I was able to run uic manually for one of the test apps, but I get a bunch of unresolved for the vtable and other stuff.

        In my project I have

        QT -= core gui

        so that it will not include -lQtCore -lQtGui, but is there some trick I need to do in order to build the project properly?

        I've worked with QT before, but not as this level.

        These sample apps have worked with shared Qt.

        1 Reply Last reply
        0
        • A Offline
          A Offline
          Alan DuBoff
          wrote on last edited by Alan DuBoff
          #11

          Here's an example of what I'm getting:

          On this app there was 2 header.ui files that I created the respective ui_header.h files for using uic.

          I should also add that a colleague of mine was working on the Windows compile of Qt, trying to make it static and said he was missing some of the components in WebKit, like Frame and some other stuff.

          I wonder if this is similar where I'm missing WebFrame below where it shows unresolved ????

          Do you know why that would be?

          g++ -Wl,-O1 -o ../../_bin/LinuxX86/layoutserver ../../_build/LinuxX86/release/layoutserver/main.o ../../_build/LinuxX86/release/layoutserver/LayoutServer.o ../../_build/LinuxX86/release/layoutserver/LayoutServerConnection.o ../../_build/LinuxX86/release/layoutserver/LayoutRendererHandler.o -L/home/aland/src/LSE7/_Globals/Properties/../../ThirdParty/boost_1_57_0/linux/i386/lib -L../../_bin/LinuxX86 -llayoutrenderer -limage -L../../ThirdParty/boost_1_57_0/linux/i386/lib ../../ThirdParty/boost_1_57_0/linux/i386/lib/libboost_thread.a ../../ThirdParty/boost_1_57_0/linux/i386/lib/libboost_system.a -lttrace -lboost_regex -lboost_system -lboost_filesystem -lboost_thread -lsynchronization -lzlib ../../ThirdParty/boost_1_57_0/linux/i386/lib/libboost_serialization.a ../../ThirdParty/boost_1_57_0/linux/i386/lib/libboost_filesystem.a ../../ThirdParty/boost_1_57_0/linux/i386/lib/libboost_date_time.a ../../ThirdParty/boost_1_57_0/linux/i386/lib/libboost_regex.a -L/opt/cm-build/lib /opt/cm-build/lib/libQt5Widgets.a -L/home/aland/src/LSE7/ThirdParty/Qt_5_5/linux/i386/static/lib /opt/cm-build/lib/libQt5WebKit.a -lXcomposite -lxslt -lgio-2.0 -lgstapp-0.10 -lgstinterfaces-0.10 -lgstpbutils-0.10 -lgstvideo-0.10 -lgstbase-0.10 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lxml2 -lsqlite3 -lQt5Sensors -lQt5Positioning -lQt5Sql -lQt5Network /opt/cm-build/lib/libQt5Gui.a /opt/cm-build/lib/libQt5Network.a -lssl -lcrypto /opt/cm-build/lib/libQt5Core.a /opt/cm-build/plugins/platforms/libqxcb.a -lQt5XcbQpa -lX11-xcb -lXi -lxcb -L/home/build-lnx/src/qt-everywhere-enterprise-src-5.5.0/qtbase/src/plugins/platforms/xcb/xcb-static -lxcb-static -lQt5PlatformSupport -lfontconfig -lfreetype -lXrender -lXext -lX11 -ludev -lQt5DBus -ldbus-1 -lQt5Gui -lpng -lqtharfbuzzng -lQt5Core -lz -licui18n -licuuc -licudata -lqtpcre -lm -ldl -pthread -lgthread-2.0 -lrt -lglib-2.0 -lGL -lpthread
          ../../_build/LinuxX86/release/layoutserver/LayoutServer.o: In function LayoutServer::closeEvent(QCloseEvent*)': LayoutServer.cpp:(.text+0x254): undefined reference to LayoutServer::staticMetaObject'
          ../../_build/LinuxX86/release/layoutserver/LayoutServer.o: In function LayoutServer::createActions()': LayoutServer.cpp:(.text+0x3ac): undefined reference to LayoutServer::staticMetaObject'
          LayoutServer.cpp:(.text+0x437): undefined reference to LayoutServer::staticMetaObject' LayoutServer.cpp:(.text+0x500): undefined reference to LayoutServer::staticMetaObject'
          LayoutServer.cpp:(.text+0x5ad): undefined reference to LayoutServer::staticMetaObject' ../../_build/LinuxX86/release/layoutserver/LayoutServer.o: In function LayoutServer::~LayoutServer()':
          LayoutServer.cpp:(.text+0x9c4): undefined reference to vtable for LayoutServer' ../../_build/LinuxX86/release/layoutserver/LayoutServer.o: In function LayoutServer::LayoutServer(unsigned short, QWidget*, QFlagsQt::WindowType)':
          LayoutServer.cpp:(.text+0x1567): undefined reference to vtable for LayoutServer' LayoutServer.cpp:(.text+0x18fd): undefined reference to vtable for AboutDialog'
          ../../_build/LinuxX86/release/layoutserver/LayoutServer.o: In function LayoutServer::start_accept()': LayoutServer.cpp:(.text+0x1fb0): undefined reference to LayoutServer::createNewRenderer()'
          ../../_build/LinuxX86/release/layoutserver/main.o: In function LayoutServerApp::~LayoutServerApp()': main.cpp:(.text._ZN15LayoutServerAppD2Ev[_ZN15LayoutServerAppD5Ev]+0x1c): undefined reference to vtable for LayoutServerApp'
          ../../_build/LinuxX86/release/layoutserver/main.o: In function LayoutServerApp::~LayoutServerApp()': main.cpp:(.text._ZN15LayoutServerAppD0Ev[LayoutServerApp::~LayoutServerApp()]+0x2c): undefined reference to vtable for LayoutServerApp'
          ../../_build/LinuxX86/release/layoutserver/main.o: In function main': main.cpp:(.text.startup+0x32): undefined reference to qInitResources_layoutserver()'
          main.cpp:(.text.startup+0x6a): undefined reference to vtable for LayoutServerApp' ../../_build/LinuxX86/release/layoutserver/LayoutServerConnection.o: In function LayoutServerConnection::handle_read(boost::system::error_code const&, unsigned int)':
          LayoutServerConnection.cpp:(.text+0xaec): undefined reference to LayoutRendererHandler::blocking_render(Request_render const&)' LayoutServerConnection.cpp:(.text+0xd3a): undefined reference to LayoutRendererHandler::blocking_hitTest(Request_hitTest const&)'
          LayoutServerConnection.cpp:(.text+0xf5e): undefined reference to LayoutRendererHandler::blocking_loadTemplate(Request_loadTemplate const&)' ../../_build/LinuxX86/release/layoutserver/LayoutRendererHandler.o: In function LayoutRendererHandler::LayoutRendererHandler()':
          LayoutRendererHandler.cpp:(.text+0x37): undefined reference to vtable for LayoutRendererHandler' ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o): In function CHtml2Bitmap::load()':
          html2bitmap.cpp:(.text+0x390): undefined reference to QWebPage::setViewportSize(QSize const&) const' html2bitmap.cpp:(.text+0x3b4): undefined reference to QWebPage::mainFrame() const'
          html2bitmap.cpp:(.text+0x3cc): undefined reference to QWebFrame::setScrollBarPolicy(Qt::Orientation, Qt::ScrollBarPolicy)' html2bitmap.cpp:(.text+0x3d4): undefined reference to QWebPage::mainFrame() const'
          html2bitmap.cpp:(.text+0x3ec): undefined reference to QWebFrame::setScrollBarPolicy(Qt::Orientation, Qt::ScrollBarPolicy)' html2bitmap.cpp:(.text+0x3f4): undefined reference to QWebPage::mainFrame() const'
          html2bitmap.cpp:(.text+0x400): undefined reference to QWebFrame::load(QUrl const&)' ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o): In function CHtml2Bitmap::setConfig(CHtml2BitmapParams const&)':
          html2bitmap.cpp:(.text+0x5f4): undefined reference to CHtml2Bitmap::staticMetaObject' html2bitmap.cpp:(.text+0x654): undefined reference to CHtml2Bitmap::staticMetaObject'
          html2bitmap.cpp:(.text+0x69c): undefined reference to CHtml2Bitmap::staticMetaObject' html2bitmap.cpp:(.text+0x6e4): undefined reference to CHtml2Bitmap::staticMetaObject'
          html2bitmap.cpp:(.text+0x72c): undefined reference to CHtml2Bitmap::staticMetaObject' ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o):html2bitmap.cpp:(.text+0x774): more undefined references to CHtml2Bitmap::staticMetaObject' follow
          ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o): In function CHtml2Bitmap::renderPageToImage(QImage&, int&, int&, QString const&, QPoint const&, QString&)': html2bitmap.cpp:(.text+0xd85): undefined reference to QWebPage::mainFrame() const'
          html2bitmap.cpp:(.text+0xe58): undefined reference to QWebFrame::evaluateJavaScript(QString const&)' html2bitmap.cpp:(.text+0xec3): undefined reference to QWebFrame::contentsSize() const'
          html2bitmap.cpp:(.text+0xf1b): undefined reference to CHtml2Bitmap::staticMetaObject' html2bitmap.cpp:(.text+0xfb4): undefined reference to QWebPage::viewportSize() const'
          html2bitmap.cpp:(.text+0xfcf): undefined reference to QWebPage::viewportSize() const' html2bitmap.cpp:(.text+0xff1): undefined reference to QWebPage::viewportSize() const'
          html2bitmap.cpp:(.text+0x10fd): undefined reference to QWebFrame::render(QPainter*, QRegion const&)' html2bitmap.cpp:(.text+0x1336): undefined reference to QWebFrame::hitTestContent(QPoint const&) const'
          html2bitmap.cpp:(.text+0x1348): undefined reference to QWebHitTestResult::isNull() const' html2bitmap.cpp:(.text+0x136a): undefined reference to QWebHitTestResult::element() const'
          html2bitmap.cpp:(.text+0x13d2): undefined reference to QWebElement::attribute(QString const&, QString const&) const' html2bitmap.cpp:(.text+0x141a): undefined reference to QWebElement::parent() const'
          html2bitmap.cpp:(.text+0x147e): undefined reference to QWebElement::~QWebElement()' html2bitmap.cpp:(.text+0x148d): undefined reference to QWebElement::~QWebElement()'
          html2bitmap.cpp:(.text+0x14a1): undefined reference to QWebHitTestResult::~QWebHitTestResult()' html2bitmap.cpp:(.text+0x14d4): undefined reference to CHtml2Bitmap::staticMetaObject'
          html2bitmap.cpp:(.text+0x153d): undefined reference to CHtml2Bitmap::staticMetaObject' html2bitmap.cpp:(.text+0x15db): undefined reference to QWebElement::isNull() const'
          html2bitmap.cpp:(.text+0x15fd): undefined reference to QWebElement::operator=(QWebElement const&)' html2bitmap.cpp:(.text+0x1655): undefined reference to QWebElement::attribute(QString const&, QString const&) const'
          html2bitmap.cpp:(.text+0x169d): undefined reference to QWebElement::parent() const' html2bitmap.cpp:(.text+0x16b3): undefined reference to QWebElement::operator=(QWebElement const&)'
          html2bitmap.cpp:(.text+0x16bb): undefined reference to QWebElement::~QWebElement()' html2bitmap.cpp:(.text+0x16d4): undefined reference to CHtml2Bitmap::staticMetaObject'
          html2bitmap.cpp:(.text+0x17c8): undefined reference to QWebHitTestResult::~QWebHitTestResult()' html2bitmap.cpp:(.text+0x189c): undefined reference to QWebElement::~QWebElement()'
          html2bitmap.cpp:(.text+0x18ab): undefined reference to QWebElement::~QWebElement()' html2bitmap.cpp:(.text+0x193a): undefined reference to QWebElement::~QWebElement()'
          ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o): In function CHtml2Bitmap::render(Img24Bit&, int&, int&, QString const&)': html2bitmap.cpp:(.text+0x1ad2): undefined reference to CHtml2Bitmap::staticMetaObject'
          html2bitmap.cpp:(.text+0x1b54): undefined reference to CHtml2Bitmap::staticMetaObject' html2bitmap.cpp:(.text+0x1bac): undefined reference to CHtml2Bitmap::staticMetaObject'
          ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o): In function CHtml2Bitmap::hitTest(QString const&, QPoint const&, QString&)': html2bitmap.cpp:(.text+0x1d74): undefined reference to CHtml2Bitmap::staticMetaObject'
          html2bitmap.cpp:(.text+0x1dcc): undefined reference to CHtml2Bitmap::staticMetaObject' ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o):html2bitmap.cpp:(.text+0x1eda): more undefined references to CHtml2Bitmap::staticMetaObject' follow
          ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o): In function CHtml2Bitmap::cancelRender()': html2bitmap.cpp:(.text+0x1f67): undefined reference to CHtml2Bitmap::finished()'
          ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o): In function CHtml2Bitmap::~CHtml2Bitmap()': html2bitmap.cpp:(.text+0x212a): undefined reference to vtable for CHtml2Bitmap'
          html2bitmap.cpp:(.text+0x2204): undefined reference to vtable for NonInteractiveWebPage' html2bitmap.cpp:(.text+0x2212): undefined reference to QWebPage::~QWebPage()'
          html2bitmap.cpp:(.text+0x224d): undefined reference to vtable for NonInteractiveWebPage' html2bitmap.cpp:(.text+0x225f): undefined reference to QWebPage::~QWebPage()'
          ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o): In function CHtml2Bitmap::CHtml2Bitmap()': html2bitmap.cpp:(.text+0x2304): undefined reference to vtable for CHtml2Bitmap'
          html2bitmap.cpp:(.text+0x2320): undefined reference to QWebPage::QWebPage(QObject*)' html2bitmap.cpp:(.text+0x2326): undefined reference to vtable for NonInteractiveWebPage'
          html2bitmap.cpp:(.text+0x2444): undefined reference to vtable for NonInteractiveWebPage' html2bitmap.cpp:(.text+0x2456): undefined reference to QWebPage::~QWebPage()'
          ../../_bin/LinuxX86/liblayoutrenderer.a(html2bitmap.o): In function CHtml2Bitmap::onLoadFinished(bool)': html2bitmap.cpp:(.text+0x24c7): undefined reference to CHtml2Bitmap::staticMetaObject'
          html2bitmap.cpp:(.text+0x2557): undefined reference to QWebPage::settings() const' html2bitmap.cpp:(.text+0x255c): undefined reference to QWebSettings::clearMemoryCaches()'
          html2bitmap.cpp:(.text+0x2564): undefined reference to CHtml2Bitmap::finished()' collect2: ld returned 1 exit status make[1]: *** [../../_bin/LinuxX86/layoutserver] Error 1 make[1]: Leaving directory /home/aland/src/LSE7/Applications/LayoutServer'
          make: *** [release] Error 2

          1 Reply Last reply
          0
          • A Offline
            A Offline
            Alan DuBoff
            wrote on last edited by
            #12

            All of the above seem to be components in QtWebKitWidgets.

            I did add that to the project to link in, but they still come up unresovled.

            Hmmmm...

            1 Reply Last reply
            0
            • A Offline
              A Offline
              Alan DuBoff
              wrote on last edited by
              #13

              One other question. Let's say I wanted to build my own shared version to install into /usr/

              Would it be possible to put a unique prefix on my shared libraries so they wouldn't conflict with the standard Qt5 libs? Would it be possible to name all the libraries with a prefix of say Xy so that all libs would be called libXyQt5Gui.so (as an example using Gui) ???

              1 Reply Last reply
              0
              • A Offline
                A Offline
                Alan DuBoff
                wrote on last edited by
                #14

                here's another app, and this seems that because uic and moc is not running, it's missing some meta object data...

                I ran uic manually to get the header needed, but do I need to run moc also?

                Why are these not being called from my project anymore I wonder?

                g++ -Wl,-O1 -o ../../_bin/LinuxX86/biobasetestapp ../../_build/LinuxX86/release/BioBaseTestApp/logbrowser.o ../../_build/LinuxX86/release/BioBaseTestApp/StringConvert.o ../../_build/LinuxX86/release/BioBaseTestApp/biob_defs_common.o ../../_build/LinuxX86/release/BioBaseTestApp/BioBaseTestApp.o ../../_build/LinuxX86/release/BioBaseTestApp/CallBackLogObj.o ../../_build/LinuxX86/release/BioBaseTestApp/CallBackModel.o ../../_build/LinuxX86/release/BioBaseTestApp/CallBackTreeItem.o ../../_build/LinuxX86/release/BioBaseTestApp/ControlData.o ../../_build/LinuxX86/release/BioBaseTestApp/DevicePropertiesDomModel.o ../../_build/LinuxX86/release/BioBaseTestApp/DevicesInfoDomModel.o ../../_build/LinuxX86/release/BioBaseTestApp/DynLoadDll_BioBase.o ../../_build/LinuxX86/release/BioBaseTestApp/RegisteredCallBackModel.o ../../_build/LinuxX86/release/BioBaseTestApp/main.o ../../_build/LinuxX86/release/BioBaseTestApp/stdafx.o -L/home/aland/src/LSE7/_Globals/Properties/../../ThirdParty/boost_1_57_0/linux/i386/lib -L../../_bin/LinuxX86 -ldynamicloader -lthreadpool -lCMTfinger -lX11 -L../../ThirdParty/boost_1_57_0/linux/i386/lib ../../ThirdParty/boost_1_57_0/linux/i386/lib/libboost_thread.a ../../ThirdParty/boost_1_57_0/linux/i386/lib/libboost_regex.a ../../ThirdParty/boost_1_57_0/linux/i386/lib/libboost_system.a -L/opt/cm-build/lib /opt/cm-build/lib/libQt5Widgets.a -lQt5Gui /opt/cm-build/lib/libQt5Gui.a -lpng -lqtharfbuzzng -lGL /opt/cm-build/lib/libQt5Xml.a -lQt5Core /opt/cm-build/lib/libQt5Core.a -lz -licui18n -licuuc -licudata -lqtpcre -lm -ldl -pthread -lgthread-2.0 -lrt -lglib-2.0 -lpthread
                ../../_build/LinuxX86/release/BioBaseTestApp/logbrowser.o: In function LogBrowser::LogBrowser(QWidget*)': logbrowser.cpp:(.text+0x2c): undefined reference to vtable for LogBrowser'
                logbrowser.cpp:(.text+0x49): undefined reference to LogBrowser::staticMetaObject' ../../_build/LinuxX86/release/BioBaseTestApp/logbrowser.o: In function LogBrowser::~LogBrowser()':
                logbrowser.cpp:(.text+0x1b5): undefined reference to vtable for LogBrowser' ../../_build/LinuxX86/release/BioBaseTestApp/logbrowser.o: In function LogBrowser::appendLogText(QString const&)':
                logbrowser.cpp:(.text+0x2dc): undefined reference to LogBrowser::newLogText(QString)' ../../_build/LinuxX86/release/BioBaseTestApp/BioBaseTestApp.o: In function BioBaseTestApp::OnBtnBioBSetPropertiesClicked()':
                BioBaseTestApp.cpp:(.text+0x2ef4): undefined reference to BioBaseTestApp::staticMetaObject' BioBaseTestApp.cpp:(.text+0x2f41): undefined reference to BioBaseTestApp::staticMetaObject'
                ../../_build/LinuxX86/release/BioBaseTestApp/BioBaseTestApp.o: In function BioBaseTestApp::OnBtnLEDRemove()': BioBaseTestApp.cpp:(.text+0x9834): undefined reference to BioBaseTestApp::staticMetaObject'
                ../../_build/LinuxX86/release/BioBaseTestApp/BioBaseTestApp.o: In function BioBaseTestApp::Static_ScannerUserOutput(wchar_t const*, void const*, BioBSetOutputData const*)': BioBaseTestApp.cpp:(.text+0x9c00): undefined reference to BioBaseTestApp::pixMapChanged()'
                ../../_build/LinuxX86/release/BioBaseTestApp/BioBaseTestApp.o: In function BioBaseTestApp::Static_DataAvailable(wchar_t const*, void const*, int, BioBData const*, int)': BioBaseTestApp.cpp:(.text+0xa1e2): undefined reference to BioBaseTestApp::pixMapChanged()'
                ../../_build/LinuxX86/release/BioBaseTestApp/BioBaseTestApp.o: In function BioBaseTestApp::Static_Preview(wchar_t const*, void const*, BioBData const*)': BioBaseTestApp.cpp:(.text+0xa398): undefined reference to BioBaseTestApp::pixMapChanged()'
                ../../_build/LinuxX86/release/BioBaseTestApp/BioBaseTestApp.o: In function BioBaseTestApp::~BioBaseTestApp()': BioBaseTestApp.cpp:(.text+0xb3c8): undefined reference to vtable for BioBaseTestApp'
                ../../_build/LinuxX86/release/BioBaseTestApp/BioBaseTestApp.o: In function BioBaseTestApp::OnBtnFileSelectClicked()': BioBaseTestApp.cpp:(.text+0xebcc): undefined reference to BioBaseTestApp::staticMetaObject'
                BioBaseTestApp.cpp:(.text+0xec02): undefined reference to BioBaseTestApp::staticMetaObject' ../../_build/LinuxX86/release/BioBaseTestApp/BioBaseTestApp.o: In function BioBaseTestApp::BioBaseTestApp(QWidget*, QFlagsQt::WindowType)':
                BioBaseTestApp.cpp:(.text+0x106f9): undefined reference to vtable for BioBaseTestApp' ../../_build/LinuxX86/release/BioBaseTestApp/CallBackModel.o: In function CallBackModel::CallBackModel(QObject*)':
                CallBackModel.cpp:(.text+0x14c): undefined reference to vtable for CallBackModel' ../../_build/LinuxX86/release/BioBaseTestApp/CallBackModel.o: In function CallBackModel::~CallBackModel()':
                CallBackModel.cpp:(.text+0x18c): undefined reference to vtable for CallBackModel' ../../_build/LinuxX86/release/BioBaseTestApp/DevicePropertiesDomModel.o: In function DevicePropertiesDomModel::DevicePropertiesDomModel(QDomDocument, QObject*)':
                DevicePropertiesDomModel.cpp:(.text+0x28): undefined reference to vtable for DevicePropertiesDomModel' ../../_build/LinuxX86/release/BioBaseTestApp/DevicePropertiesDomModel.o: In function DevicePropertiesDomModel::DevicePropertiesDomModel(QObject*)':
                DevicePropertiesDomModel.cpp:(.text+0x1fc): undefined reference to vtable for DevicePropertiesDomModel' ../../_build/LinuxX86/release/BioBaseTestApp/DevicePropertiesDomModel.o: In function DevicePropertiesDomModel::~DevicePropertiesDomModel()':
                DevicePropertiesDomModel.cpp:(.text+0x25c): undefined reference to vtable for DevicePropertiesDomModel' ../../_build/LinuxX86/release/BioBaseTestApp/DevicePropertiesDomModel.o: In function DevicePropertiesDomModel::headerData(int, Qt::Orientation, int) const':
                DevicePropertiesDomModel.cpp:(.text+0x884): undefined reference to DevicePropertiesDomModel::staticMetaObject' DevicePropertiesDomModel.cpp:(.text+0x90d): undefined reference to DevicePropertiesDomModel::staticMetaObject'
                ../../_build/LinuxX86/release/BioBaseTestApp/DevicesInfoDomModel.o: In function DevicesInfoDomModel::DevicesInfoDomModel(QDomDocument, QObject*)': DevicesInfoDomModel.cpp:(.text+0x28): undefined reference to vtable for DevicesInfoDomModel'
                ../../_build/LinuxX86/release/BioBaseTestApp/DevicesInfoDomModel.o: In function DevicesInfoDomModel::DevicesInfoDomModel(QObject*)': DevicesInfoDomModel.cpp:(.text+0x1fc): undefined reference to vtable for DevicesInfoDomModel'
                ../../_build/LinuxX86/release/BioBaseTestApp/DevicesInfoDomModel.o: In function DevicesInfoDomModel::~DevicesInfoDomModel()': DevicesInfoDomModel.cpp:(.text+0x25c): undefined reference to vtable for DevicesInfoDomModel'
                ../../_build/LinuxX86/release/BioBaseTestApp/DevicesInfoDomModel.o: In function DevicesInfoDomModel::headerData(int, Qt::Orientation, int) const': DevicesInfoDomModel.cpp:(.text+0x158e): undefined reference to DevicesInfoDomModel::staticMetaObject'
                DevicesInfoDomModel.cpp:(.text+0x1614): undefined reference to DevicesInfoDomModel::staticMetaObject' DevicesInfoDomModel.cpp:(.text+0x1684): undefined reference to DevicesInfoDomModel::staticMetaObject'
                DevicesInfoDomModel.cpp:(.text+0x16fc): undefined reference to DevicesInfoDomModel::staticMetaObject' ../../_build/LinuxX86/release/BioBaseTestApp/RegisteredCallBackModel.o: In function RegisteredCallBackModel::~RegisteredCallBackModel()':
                RegisteredCallBackModel.cpp:(.text+0x23): undefined reference to vtable for RegisteredCallBackModel' ../../_build/LinuxX86/release/BioBaseTestApp/RegisteredCallBackModel.o: In function RegisteredCallBackModel::setCallBackHighlighted(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool)':
                RegisteredCallBackModel.cpp:(.text+0x139d): undefined reference to RegisteredCallBackModel::updateList()' ../../_build/LinuxX86/release/BioBaseTestApp/RegisteredCallBackModel.o: In function RegisteredCallBackModel::RegisteredCallBackModel(QObject*)':
                RegisteredCallBackModel.cpp:(.text+0x15fc): undefined reference to vtable for RegisteredCallBackModel' collect2: ld returned 1 exit status make[2]: *** [../../_bin/LinuxX86/biobasetestapp] Error 1 make[2]: Leaving directory /home/aland/src/LSE7/Applications/BioBaseTestApp'
                make[1]: *** [release] Error 2
                make[1]: Leaving directory `/home/aland/src/LSE7/Applications/BioBaseTestApp'
                make: *** [sub----------Applications-BioBaseTestApp-BioBaseTestApp-pro-make_first] Error 2
                [aland@oak-32 LSCAN_Essentials]$

                1 Reply Last reply
                0
                • SGaistS Offline
                  SGaistS Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on last edited by
                  #15

                  Did you build the tools ?

                  Not prefix but infix, take a look at the -qtlibinfix option of configure

                  Don't forget that if you re-configure Qt you need to rebuild from scratch

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  A 1 Reply Last reply
                  0
                  • SGaistS SGaist

                    Did you build the tools ?

                    Not prefix but infix, take a look at the -qtlibinfix option of configure

                    Don't forget that if you re-configure Qt you need to rebuild from scratch

                    A Offline
                    A Offline
                    Alan DuBoff
                    wrote on last edited by Alan DuBoff
                    #16

                    @SGaist Yes, I built the tools and am using qmake from the bin dir. I have modified the environment with QMAKESPEC and pathing in the bin dir to allow it to run successfully.

                    Does that last link look like it's missing some of the meta object information to you?

                    I wasn't sure what takes place during the make process, I have seen both uic and moc running but wasn't sure of the order and/or if other stuff runs. Clearly uic is not running as I had to run it myself to produce the ui_header.h file(s).

                    I've seen a lot of bugs where uic doesn't run when people replace Qt with their own.

                    In the past I've never had that problem on Linux as I just put my shared libs in /usr and the libraries ended up in /usr/lib, but I'm not sure that would be good for an app that ships. We're using Ubuntu 12.04, which doesn't have any Qt5 packages, but if someone added them to their system we stand the chance to overwrite their libraries with ours if we install to /usr.

                    I have also read that there are some exports, so renaming the libs is not a long term solution.

                    1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #17

                      I don't know what is happening to you, exporting the QMAKESPEC is not something that should be needed at all. Another silly question: did you run make install ?

                      When deploying such an app you should not put anything in /usr/lib. You should rather have your package in an known folder that will also contain Qt and a link in e.g. /usr/bin or rather /usr/local/bin, add @origin to the rpath when building so your application will search for Qt in the same folder as it is.

                      Interested in AI ? www.idiap.ch
                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                      A 1 Reply Last reply
                      0
                      • SGaistS SGaist

                        I don't know what is happening to you, exporting the QMAKESPEC is not something that should be needed at all. Another silly question: did you run make install ?

                        When deploying such an app you should not put anything in /usr/lib. You should rather have your package in an known folder that will also contain Qt and a link in e.g. /usr/bin or rather /usr/local/bin, add @origin to the rpath when building so your application will search for Qt in the same folder as it is.

                        A Offline
                        A Offline
                        Alan DuBoff
                        wrote on last edited by SGaist
                        #18

                        @SGaist I just wanted to make the QMAKESPEC specific. I have since moved back to a shared build, as I had problems linking statically with some of the Boost libraries, and the Boost libraries had a couple problems compiled as static. The solution was to set the rpath into the binaries and shared libs to point to my directory I put in /opt.

                        I have things all worked out now. I'm sure I have clean builds that go into /opt, and I have both architectures packaged up in Debian packages. I include both architectures in each respective .deb package.

                        I've set the rpath in all my binaries and shared libs to point to my /opt/xxxx/i386/lib or /opt/xxxx/x86_64/lib for the respective architecture.

                        I haven't tested yet, but my main shared library is in /usr/lib, and that is what developers will link to. That shared library has the rpath set to /opt/xxxx/<arch>/lib, so I think the developed applications should resolve without having to add the rpath to the build. That will be easier for developers. This means that developers will not need to change their environment at all and can just include my main lib I placed in /usr/lib with -l in their LIBS statement.

                        I was able to get all my packages built and installed to /opt/xxxx which is my entire Qt 5.5.1 build along with a couple other dependencies. I was going to use /usr/local, but typically that's for locally built packages, and /opt is a better location for this stuff, IMO. This means that no LD_LIBRARY_PATH b#!!$HITery is needed, nor any ld.so.conf @$$#atery...

                        I'm distributing for Ubuntu 12.04.5, which doesn't have Qt5 available by default, although Ubuntu has a ppa to add for Qt5 packages, they don't have all of them and don't have Qt5X11Extras which I needed. I didn't want to run the risk of putting this stuff in /usr to have a conflict with other Qt5 libs that might be compiled differently. Now mine are solely in /opt and should not conflict with anything else.

                        All of the .deb packages install and everything seems to run fine. :-)

                        Thanks for your help...sorry for the slow response, I've been burning the candle at both ends getting our new release compiled and packaged properly, and had to setup build servers for 32-bit and 64-bit as well. Everything is automated and builds cleanly.

                        NOTE: I will add this tidbit of information that took me quite a while to figure out in the qmake projects, how to differentiate between architecture to be able to include different compile and/or link options. The way it is documented doesn't work correctly. This is what I use. I only need to worry about 32-bit and 64-bit for Intel architecture.

                        Platform = $$QMAKE_HOST.arch
                        contains(Platform, i686 ) {
                        # 32-bit
                        }else{
                        # 64-bit
                        }
                        

                        [edit: Added missing coding tags ``` SGaist]

                        1 Reply Last reply
                        0
                        • SGaistS Offline
                          SGaistS Offline
                          SGaist
                          Lifetime Qt Champion
                          wrote on last edited by
                          #19

                          No problem, the essential point is that you could go further correctly :)

                          That's strange, what value are you getting for 64 bit ?

                          Interested in AI ? www.idiap.ch
                          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                          A 1 Reply Last reply
                          0
                          • SGaistS SGaist

                            No problem, the essential point is that you could go further correctly :)

                            That's strange, what value are you getting for 64 bit ?

                            A Offline
                            A Offline
                            Alan DuBoff
                            wrote on last edited by
                            #20

                            @SGaist I get x86_64 on 64-bit. I thought it odd that 32-bit give i686 rather than i386. On ubuntu the architecture is i386 for 32-bit and amd64 for 64-bit packages.

                            BTW, I notice something odd, in that it seems to require my .qt-license to use the tools. Is it required that I need to distribute my license with my build of Qt5 do you know?

                            I compiled the Enterprise edition, and compiled a commercial (not an opensource) version.

                            Seems odd that they would need a license for the distribution.

                            1 Reply Last reply
                            0
                            • SGaistS Offline
                              SGaistS Offline
                              SGaist
                              Lifetime Qt Champion
                              wrote on last edited by
                              #21

                              That's a naming convention like arm/armel both run on arm but have a different ABI.

                              i686 is the P6 generation of Intel's 32bit architecture

                              Interested in AI ? www.idiap.ch
                              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                              1 Reply Last reply
                              0
                              • A Offline
                                A Offline
                                Alan DuBoff
                                wrote on last edited by
                                #22

                                Yeah, but in the docs that is not how they tell you to check for architecture. I can't remember off the top of my head, but the way they show doesn't work for me. What i have above works, at least on Ubuntu 12.04.

                                I switched back to an opensource compile rather than commercial as I am not sure I can redistribute the commercial build for developers to use on my current Silver license. I'm waiting for QT to get back to me so I can better understand that.

                                1 Reply Last reply
                                0
                                • SGaistS Offline
                                  SGaistS Offline
                                  SGaist
                                  Lifetime Qt Champion
                                  wrote on last edited by
                                  #23

                                  The doc shows an example that makes use of QMAKE_HOST.arch with the win32-g++ scope. Just remove that scope and it should work.

                                  Interested in AI ? www.idiap.ch
                                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                  1 Reply Last reply
                                  0

                                  • Login

                                  • Login or register to search.
                                  • First post
                                    Last post
                                  0
                                  • Categories
                                  • Recent
                                  • Tags
                                  • Popular
                                  • Users
                                  • Groups
                                  • Search
                                  • Get Qt Extensions
                                  • Unsolved