Stop static linking libstdc++ in release builds

* This seemed to cause crashes on some systems as libproxy links to libstdc++
  and can then cause symbol conflicts between the static libstdc++ and the
  system's libstdc++.
* libproxy itself cannot be statically linked, so the solution is either to
  configure Qt without libproxy and break anyone who needs proxy support, or
  stop statically linking libstdc++ and add a new dependency. At commit time
  most distributions have at least g++-5's libstdc++ in their minspec so we can
  require that - the main two that seem to fall short are Debian Jessie and
  CentOS 7. Users on those systems will have to install a newer libstdc++ or
  compile from source rather than using the binary releases.
This commit is contained in:
baldurk
2019-06-24 11:32:39 +01:00
parent 1fcac940ae
commit 51de7255d3
4 changed files with 13 additions and 6 deletions
+1 -1
View File
@@ -26,7 +26,7 @@ endif()
if(STATIC_QRENDERDOC)
set(QMAKE_CXXFLAGS "-DSTATIC_QRENDERDOC=1")
set(QMAKE_CONFIG "debug static")
set(QMAKE_LDFLAGS "-static-libstdc++ -lutil")
set(QMAKE_LDFLAGS "-lutil")
endif()
if(NOT APPLE)
+10 -3
View File
@@ -34,11 +34,18 @@ Requirements:
These should be available on any system with X installed. You can always
build RenderDoc yourself from source. For more information, github.
To run qrenderdoc, Qt is statically linked two additional system
To run qrenderdoc, Qt is statically linked but additional system
libraries are needed:
* libfontconfig
* libfreetype
* libstdc++ >= 6.0.21 (from GCC 5.x)
* libfontconfig1 >= 2.11.0
* libfreetype6 >= 2.4.8
* libproxy >= 0.4.7
If you get errors on run about missing GLIBCXX symbols then you likely
haven't met the libstdc++ requirement and will need to either find a
package in your distribution to install gcc 5.x, or else compile
RenderDoc from source (though you will still need gcc-5 to compile).
Vulkan Layer registration:
--------------------------
+1 -1
View File
@@ -7,7 +7,7 @@ rm -rf /io/*
cd /
mkdir renderdoc_build
cd renderdoc_build
CC=clang CXX=clang++ CFLAGS="-fPIC -fvisibility=hidden" LDFLAGS="-static-libstdc++" cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/io/dist/ -DVULKAN_LAYER_FOLDER=/io/dist/etc/vulkan/implicit_layer.d -DSTATIC_QRENDERDOC=ON -DQRENDERDOC_NO_CXX11_REGEX=ON /renderdoc
CC=clang CXX=clang++ CFLAGS="-fPIC -fvisibility=hidden" cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/io/dist/ -DVULKAN_LAYER_FOLDER=/io/dist/etc/vulkan/implicit_layer.d -DSTATIC_QRENDERDOC=ON -DQRENDERDOC_NO_CXX11_REGEX=ON /renderdoc
make -j8
make install
+1 -1
View File
@@ -16,7 +16,7 @@ wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
apt-get update
# install dependencies
apt-get install --force-yes -y libx11-dev libx11-xcb-dev mesa-common-dev libgl1-mesa-dev gcc g++ clang-3.8 clang++-3.8 make pkg-config git libcurl4-openssl-dev libpcre3-dev libstdc++-6-dev
apt-get install --force-yes -y libx11-dev libx11-xcb-dev mesa-common-dev libgl1-mesa-dev gcc-5 g++-5 clang-3.8 clang++-3.8 make pkg-config git libcurl4-openssl-dev libpcre3-dev
# install dependencies for building qt
apt-get install --force-yes -y libproxy-dev autoconf autogen libtool xutils-dev bison