Differences between revisions 1 and 12 (spanning 11 versions)
Revision 1 as of 2011-03-04 01:04:09
Size: 221
Editor: SamatJain
Comment: Profile-guided Optimization
Revision 12 as of 2017-08-04 18:11:55
Size: 2494
Editor: SamatJain
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:

== Check compiler preprocessor defines ==

{{{#!highlight sh numbers=off
# E.g. check for the version of OpenMP supported
echo | cpp -fopenmp -dM | grep -i open
#define _OPENMP 200805
}}}

== Compiling gcc ==

Download gcc tarball, run `contrib/download_prerequisites` script to download external libraries to build as part of gcc.

./configure --prefix=/opt/gcc-custom --disable-multilib --disable-libada --enable-languages=c,c++

== Static compilation ==

[[http://insanecoding.blogspot.ie/2012/07/creating-portable-linux-binaries.html|Insane Coding: Creating portable Linux binaries]]. Use `-static-libgcc -static-libstdc++` to include compiler support libraries.

[[http://www.pixelbeat.org/programming/linux_binary_compatibility.html|Linux distribution binary compatibility]]. Discusses glibc symbol versioning, and using the `.symver` directive to select a version of a functionl.

[[https://blogs.gnome.org/tvb/2013/12/14/application-bundles-revisited/ Application Bundles Revisited – Tristan's World]]. Discusses a vala script that will create a header file targeting an older glibc.

https://github.com/probonopd/AppImageKit/tree/fc6b9c5e896e4408ffd52a41dcb7a0be3149f74e/LibcWrapGenerator. Above script w/ CMake integration.

== ABI ==

[[https://access.redhat.com/solutions/19458|What gcc versions are available in Red Hat Enterprise Linux? - Red Hat Customer Portal]]: versions of GCC available on various RHEL/CentOS versions, including the Redhat Developer Toolset.

GCC 5.1 dual ABI w.r.t. std::string and std::list: https://gcc.gnu.org/onlinedocs/libstdc%2B%2B/manual/using_dual_abi.html. Can be enabled by default in GCC by using `--with-default-libstdcxx-abi=c++98`

== Interesting reading ==

[[https://gcc.gnu.org/ml/gcc/2004-06/msg01956.html|Performance benchmarks w/ calling DSO libraries]]: compares DSOs w/ Position Independent Code (PIC) enabled, static libraries, and directly calling functions.

[[https://gcc.gnu.org/projects/cxx-status.html|C++-1x/z/etc support in GCC]]

[[https://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode_using.html|Parallel STL in gcc]]

ABI tracking: https://abi-laboratory.pro/tracker/timeline/glibc/ and https://github.com/lvc/abi-tracker

----
CategoryCheatSheet

Using profile-guided optimization (PGO)

gcc -O3 -march=native -pg -fprofile-generate ...
# Run a benchmark or program's typical load
gcc -O3 -march=native -fprofile-use ...

Check compiler preprocessor defines

# E.g. check for the version of OpenMP supported
echo | cpp -fopenmp -dM | grep -i open
#define _OPENMP 200805

Compiling gcc

Download gcc tarball, run contrib/download_prerequisites script to download external libraries to build as part of gcc.

./configure --prefix=/opt/gcc-custom --disable-multilib --disable-libada --enable-languages=c,c++

Static compilation

Insane Coding: Creating portable Linux binaries. Use -static-libgcc -static-libstdc++ to include compiler support libraries.

Linux distribution binary compatibility. Discusses glibc symbol versioning, and using the .symver directive to select a version of a functionl.

https://blogs.gnome.org/tvb/2013/12/14/application-bundles-revisited/ Application Bundles Revisited – Tristan's World. Discusses a vala script that will create a header file targeting an older glibc.

https://github.com/probonopd/AppImageKit/tree/fc6b9c5e896e4408ffd52a41dcb7a0be3149f74e/LibcWrapGenerator. Above script w/ CMake integration.

ABI

What gcc versions are available in Red Hat Enterprise Linux? - Red Hat Customer Portal: versions of GCC available on various RHEL/CentOS versions, including the Redhat Developer Toolset.

GCC 5.1 dual ABI w.r.t. std::string and std::list: https://gcc.gnu.org/onlinedocs/libstdc%2B%2B/manual/using_dual_abi.html. Can be enabled by default in GCC by using --with-default-libstdcxx-abi=c++98

Interesting reading

Performance benchmarks w/ calling DSO libraries: compares DSOs w/ Position Independent Code (PIC) enabled, static libraries, and directly calling functions.

C++-1x/z/etc support in GCC

Parallel STL in gcc

ABI tracking: https://abi-laboratory.pro/tracker/timeline/glibc/ and https://github.com/lvc/abi-tracker


CategoryCheatSheet

SamatsWiki: CheatSheet/Gcc (last edited 2020-05-09 00:20:51 by SamatJain)