The cstddef discovery is from https://stackoverflow.com/questions/52567517/freefilesync-c-error-byte-is-not-a-member-of-std Some changes just make the application work better in an installed setting (e.g., the hard-coded resouce path). Tricking the wxWidgets ABI version comes from https://stackoverflow.com/questions/45123664/wxwidgets-runtime-error-mismatch-version/47822976#47822976 FreeFileSync 10.11 updated the default compile flags to -std=c++2a, but this fails on gcc 4.8.5 on el7. Reverting to -std=c++17 allows the application to compile. diff -Naur 10.13-0/FreeFileSync/Source/base/ffs_paths.cpp 10.13-1/FreeFileSync/Source/base/ffs_paths.cpp --- 10.13-0/FreeFileSync/Source/base/ffs_paths.cpp 2019-06-14 20:23:07.615661499 -0400 +++ 10.13-1/FreeFileSync/Source/base/ffs_paths.cpp 2019-06-14 20:36:28.178274292 -0400 @@ -55,7 +55,8 @@ Zstring fff::getResourceDirPf() { - return getProcessParentFolderPath() + FILE_NAME_SEPARATOR + Zstr("Resources") + FILE_NAME_SEPARATOR; + // For Fedora, EL and Devuan, install to /usr/share/freefilesync specificly + return Zstr("/usr/share/freefilesync/"); } diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.11-0/FreeFileSync/Source/Makefile 10.11-1/FreeFileSync/Source/Makefile --- 10.11-0/FreeFileSync/Source/Makefile 2019-04-12 07:59:45.042147902 -0400 +++ 10.18-1/FreeFileSync/Source/Makefile 2019-11-21 20:59:25.548277619 -0500 @@ -1,10 +1,10 @@ -EXENAME = FreeFileSync_$(shell arch) +EXENAME = FreeFileSync -CXXFLAGS = -std=c++2a -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \ +CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \ -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \ - -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread + -O3 -DNDEBUG -fPIC `wx-config --version=3.0 --cxxflags --debug=no` -pthread -LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread +LINKFLAGS = -s -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-z,relro -no-pie `wx-config --version=3.0 --libs std, aui --debug=no | sed -r -e 's/-[^[:space:]]+web[^[:space:]]+//;'` -lz -pthread CXXFLAGS += `pkg-config --cflags openssl` @@ -17,6 +17,7 @@ LINKFLAGS += `pkg-config --libs libssh2` CXXFLAGS += `pkg-config --cflags gtk+-2.0` +LINKFLAGS += `pkg-config --libs gtk+-2.0` #treat as system headers so that warnings are hidden: CXXFLAGS += -isystem/usr/include/gtk-2.0 diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.11-0/FreeFileSync/Source/RealTimeSync/application.h 10.11-1/FreeFileSync/Source/RealTimeSync/application.h --- 10.11-0/FreeFileSync/Source/RealTimeSync/application.h 2019-04-12 07:59:45.035147580 -0400 +++ 10.11-1/FreeFileSync/Source/RealTimeSync/application.h 2019-04-12 10:19:57.227913415 -0400 @@ -7,6 +7,8 @@ #ifndef APPLICATION_H_18506781708176342677 #define APPLICATION_H_18506781708176342677 +#define __GXX_ABI_VERSION 1002 + #include diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.11-0/FreeFileSync/Source/RealTimeSync/Makefile 10.11-1/FreeFileSync/Source/RealTimeSync/Makefile --- 10.11-0/FreeFileSync/Source/RealTimeSync/Makefile 2019-04-12 07:59:45.008146336 -0400 +++ 10.18-1/FreeFileSync/Source/RealTimeSync/Makefile 2019-11-22 10:14:04.326175203 -0500 @@ -1,13 +1,14 @@ -EXENAME = RealTimeSync_$(shell arch) +EXENAME = RealTimeSync -CXXFLAGS = -std=c++2a -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \ +CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \ -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \ - -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread + -O3 -DNDEBUG -fPIC `wx-config --version=3.0 --cxxflags --debug=no` -pthread -LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread +LINKFLAGS = -s -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -no-pie `wx-config --version=3.0 --cxxflags --libs std, aui --debug=no | sed -r -e 's/-[^[:space:]]+web[^[:space:]]+//;'` -lz -pthread #Gtk - support "no button border" CXXFLAGS += `pkg-config --cflags gtk+-2.0` +LINKFLAGS += `pkg-config --libs gtk+-2.0` #treat as system headers so that warnings are hidden: CXXFLAGS += -isystem/usr/include/gtk-2.0 diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.19-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.19-1/FreeFileSync/Source/ui/small_dlgs.cpp --- 10.11-0/FreeFileSync/Source/ui/small_dlgs.cpp 2019-12-27 07:56:06.714625467 -0500 +++ 10.19-1/FreeFileSync/Source/ui/small_dlgs.cpp 2019-12-27 08:56:49.251467477 -0500 @@ -95,6 +95,8 @@ build += L"64 Bit"; #endif + build += L" for CentOS 7/Fedora 29"; + build += SPACED_BULLET; build += formatTime(FORMAT_DATE, getCompileTime()); diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.11-0/wx+/app_main.h 10.11-1/wx+/app_main.h --- 10.11-0/wx+/app_main.h 2019-04-12 07:59:44.936143019 -0400 +++ 10.11-1/wx+/app_main.h 2019-04-12 10:19:57.228913439 -0400 @@ -7,6 +7,8 @@ #ifndef APP_MAIN_H_08215601837818347575856 #define APP_MAIN_H_08215601837818347575856 +#define __GXX_ABI_VERSION 1002 + #include #include diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.11-0/zen/ring_buffer.h 10.11-1/zen/ring_buffer.h --- 10.11-0/zen/ring_buffer.h 2019-04-12 07:59:46.098196548 -0400 +++ 10.11-1/zen/ring_buffer.h 2019-04-12 10:19:57.228913439 -0400 @@ -9,6 +9,7 @@ #include #include "scope_guard.h" +#include namespace zen diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.11-0/zen/serialize.h 10.19-1/zen/serialize.h --- 10.11-0/zen/serialize.h 2019-04-12 07:59:46.080195719 -0400 +++ 10.19-1/zen/serialize.h 2019-12-27 11:35:50.379901321 -0500 @@ -10,6 +10,7 @@ #include #include #include +#include #include "string_base.h" //keep header clean from specific stream implementations! (e.g.file_io.h)! used by abstract.h! Message: For -std=c++17 we do not get to use charconv. It appears it is not actually in use, because the application compiles with this patch. diff -Naur -x '*.orig' -x '.git*' -x '*.swp' -x '*.rej' 10.18-0/zen/legacy_compiler.cpp 10.18-1/zen/legacy_compiler.cpp --- 10.18-0/zen/legacy_compiler.cpp 2019-11-21 20:59:02.633016149 -0500 +++ 10.18-1/zen/legacy_compiler.cpp 2019-11-21 20:59:31.042340308 -0500 @@ -5,7 +5,7 @@ // ***************************************************************************** #include "legacy_compiler.h" -#include +//#include //1. including this one in string_tools.h blows up VC++: // "An internal error has occurred in the compiler. (compiler file 'd:\agent\_work\1\s\src\vctools\Compiler\Utc\src\p2\p2symtab.c', line 2618)" //2. using inside PCH: "fatal error C1076: compiler limit: internal heap limit reached"