[Interest] Issues building Qt 5.4.0 and 5.3.2 on CentOS 5.

Simon Matthews simon at matthews.eu
Sat Feb 14 00:04:56 CET 2015


I am continuing in my quest to build Qt 5.4.0 (and now added Qt 5.3.2) on 
CentOS 5. The following refers to 5.3.2, but I think the same problem 
exists in 5.4.0.

So far, I have:
Installed updated python, flex, sqlite (and sqlite-devel), ICU and 
fontconfig. Installed devtoolset-1.1. 
Patched the source to deal with one line of ruby code that would only work 
with a newer version of ruby.
Patched the source according to the instructions on this page:
http://kate-editor.org/2014/12/22/qt-5-4-on-red-hat-enterprise-5/
Used a slightly modified version of the configure command from the same 
page:
./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.3.2-x86_64 
-widgets -no-openssl  -no-dbus -qt-xcb -skip activeqt -skip androidextras 
-skip connectivity -skip enginio -skip location -skip macextras -skip 
multimedia -skip quick1 -skip sensors -skip serialport -skip 
webkit-examples  -skip x11extras  -c++11 -icu -fontconfig

However, I have now come across another missing definition: O_CLOEXEC. 
On later platforms, this is defined in glibc-headers and linux-headers. 
Specifically, the files:
/usr/include/asm-generic/fcntl.h and /usr/include/asm-generic/fcntl.h
The definition is used in 
qtwebkit/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp:
       do {
             fileDescriptor = shm_open(tempName.data(), O_CREAT | O_CLOEXEC | O_RDWR, S_IRUSR | S_IWUSR);
         } while (fileDescriptor == -1 && errno == EINTR);

Can I safely comment change the line to the following:
fileDescriptor = shm_open(tempName.data(), O_CREAT |  O_RDWR, S_IRUSR | S_IWUSR);

Here is the error:

Platform/unix/SharedMemoryUnix.cpp: In static member function ‘static 
WTF::PassRefPtr<WebKit::SharedMemory> 
WebKit::SharedMemory::create(size_t)’:
Platform/unix/SharedMemoryUnix.cpp:149:66: error: ‘O_CLOEXEC’ was not 
declared in this scope
make[3]: *** [.obj/Platform/unix/SharedMemoryUnix.o] Error 1








More information about the Interest mailing list