[Interest] Building Qt 5.5.1 on CentOS 5

Simon Matthews simon at bluepearlsoftware.com
Sat Mar 12 01:32:13 CET 2016


I am trying to build Qt 5.5.1 on CentOS 5. I suspect that we don't need 
linuxfb, but there doesn't seem to be an easy way to skip this.

However, I get the following error:
/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/xcb/gl_integrations
gmake[6]: Entering directory 
`/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/xcb/gl_integrations'
gmake[6]: Nothing to be done for `first'.
gmake[6]: Leaving directory 
`/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/xcb/gl_integrations'
gmake[5]: Leaving directory 
`/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/xcb'
cd linuxfb/ && ( test -e Makefile || 
/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/bin/qmake 
/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/linuxfb/linuxfb.pro 
-o Makefile ) && gmake -f Makefile
/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/linuxfb
gmake[5]: Entering directory 
`/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/linuxfb'
rm -f libqlinuxfb.so
g++ -Wl,--no-undefined -Wl,-O1 -Wl,--enable-new-dtags 
-Wl,-rpath,/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/linuxfb/‘�� 
-Wl,-rpath,/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/linuxfb/‘�� 
-shared -o libqlinuxfb.so .obj/main.o .obj/qlinuxfbintegration.o 
.obj/qlinuxfbscreen.o .obj/moc_qlinuxfbscreen.o 
-L/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/lib 
-lQt5PlatformSupport -lfontconfig -lfreetype -lQt5DBus -pthread -L/lib64 
-lgthread-2.0 -lglib-2.0 -lQt5Gui -lQt5Core -lGL -lpthread
/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/lib/libQt5PlatformSupport.a(qfbvthandler.o): 
In function `QFbVtHandler::QFbVtHandler(QObject*)':
qfbvthandler.cpp:(.text+0x1c1): undefined reference to `signalfd'
collect2: error: ld returned 1 exit status
gmake[5]: *** [../../../../plugins/platforms/libqlinuxfb.so] Error 1
gmake[5]: Leaving directory 
`/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/linuxfb'
gmake[4]: *** [sub-linuxfb-make_first] Error 2
gmake[4]: Leaving directory 
`/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms'
gmake[3]: *** [sub-platforms-make_first] Error 2
gmake[3]: Leaving directory 
`/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins'
gmake[2]: *** [sub-plugins-make_first] Error 2
gmake[2]: Leaving directory 
`/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase/src'
gmake[1]: *** [sub-src-make_first] Error 2
gmake[1]: Leaving directory 
`/home/simon/rpms/build/qt-everywhere-opensource-src-5.5.1/qtbase'
gmake: *** [module-qtbase-make_first] Error 2


In order to get this far, I have done the following:
1. installed extra packages as described on this page:
http://kate-editor.org/2014/12/22/qt-5-4-on-red-hat-enterprise-5/

2. Copied /usr/include/sys/signalfd.h from a CentOS6 system to the same 
location on my CentOS5 build machine.

3. Made the following changes to the source:
sed -i 's/#define QTESTLIB_USE_PERF_EVENTS/#undef 
QTESTLIB_USE_PERF_EVENTS/g' qtbase/src/testlib/qbenchmark_p.h
sed -i 's/getbyte/getc/' 
qtwebkit/Source/JavaScriptCore/offlineasm/offsets.rb
sed -i 's/| O_CLOEXEC//' 
./qtwebkit/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp

patch -p0 << EOF
--- qtbase/src/network/ssl/qsslsocket_openssl.cpp.orig 2016-03-11 
10:43:26.000000000 -0800
+++ qtbase/src/network/ssl/qsslsocket_openssl.cpp 2016-03-11 
10:43:46.000000000 -0800
@@ -1582,8 +1582,8 @@
      if (readBufferMaxSize)
plainSocket->setReadBufferSize(readBufferMaxSize);

-    if (q_SSL_ctrl((ssl), SSL_CTRL_GET_SESSION_REUSED, 0, NULL))
-        configuration.peerSessionShared = true;
+//    if (q_SSL_ctrl((ssl), SSL_CTRL_GET_SESSION_REUSED, 0, NULL))
+//        configuration.peerSessionShared = true;

  #ifdef QT_DECRYPT_SSL_TRAFFIC
      if (ssl->session && ssl->s3) {

EOF
patch -p0 << EOF
--- qtbase/src/network/ssl/qsslsocket_openssl.cpp.orig 2016-03-11 
11:15:35.000000000 -0800
+++ qtbase/src/network/ssl/qsslsocket_openssl.cpp 2016-03-11 
11:14:21.000000000 -0800
@@ -390,8 +390,8 @@
          if (!ace.isEmpty()
              && !QHostAddress().setAddress(tlsHostName)
              && !(configuration.sslOptions & 
QSsl::SslOptionDisableServerNameIndication)) {
-            if (!q_SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_HOSTNAME, 
TLSEXT_NAMETYPE_host_name, ace.data()))
-                qCWarning(lcSsl, "could not set 
SSL_CTRL_SET_TLSEXT_HOSTNAME, Server Name Indication disabled");
+//            if (!q_SSL_ctrl(ssl, SSL_CTRL_SET_TLSEXT_HOSTNAME, 
TLSEXT_NAMETYPE_host_name, ace.data()))
+//                qCWarning(lcSsl, "could not set 
SSL_CTRL_SET_TLSEXT_HOSTNAME, Server Name Indication disabled");
          }
      }
EOF
patch -p0 << EOF
--- qtbase/src/network/ssl/qsslcontext_openssl.cpp.orig 2016-03-11 
10:44:09.000000000 -0800
+++ qtbase/src/network/ssl/qsslcontext_openssl.cpp 2016-03-11 
10:45:48.000000000 -0800
@@ -468,7 +468,7 @@
              unsigned char *data = reinterpret_cast<unsigned char 
*>(m_sessionASN1.data());
              if (!q_i2d_SSL_SESSION(session, &data))
                  qCWarning(lcSsl, "could not store persistent version 
of SSL session");
-            m_sessionTicketLifeTimeHint = 
session->tlsext_tick_lifetime_hint;
+//            m_sessionTicketLifeTimeHint = 
session->tlsext_tick_lifetime_hint;
          }
      }

EOF

4. Made sure that python26 is used.

5. Used the following configure command:
./configure -R ‘\\\$$ORIGIN’ -D _X_INLINE=inline -D 
XK_dead_currency=0xfe6f -D XK_ISO_Level5_Lock=0xfe13 -D 
FC_WEIGHT_EXTRABLACK=215 -D FC_WEIGHT_ULTRABLACK=FC_WEIGHT_EXTRABLACK -v 
-opensource -qt-libpng -qt-zlib -qt-libjpeg  -nomake examples 
-qt-sql-sqlite -confirm-license -prefix /usr/lib/Qt/Qt-5.5.1-x86_64 
-widgets -qt-xcb -skip activeqt -skip androidextras -skip connectivity 
-skip enginio -skip macextras -skip multimedia -skip quick1  -skip 
serialport -skip wayland -skip webchannel -skip webkit-examples -skip 
x11extras  -c++11 -icu -fontconfig  -opengl -openssl 
-no-reduce-relocations -no-rpath

Simon



More information about the Interest mailing list