https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87769
--- Comment #7 from Mateusz Zych <mte.zych at gmail dot com> --- Hi Joseph, ;) Thank you very much for your advice - it was really helpful! I've managed to implement a script creating standalone GNU toolchain for C++: - https://github.com/mtezych/cpp/blob/master/CreateToolchain.sh However, I still have an issue with some configurations of triples. For example, the following cross-compiling configurations are building successfully: HOST = x86_64-pc-linux-gnu TARGET = x86_64-glibc-linux-gnu HOST = x86_64-linux-gnu TARGET = x86_64-glibc-linux-gnu HOST = x86_64-pc-linux-gnu TARGET = x86_64-unknown-linux-gnu HOST = x86_64-unknown-linux-gnu TARGET = x86_64-pc-linux-gnu Even cross-compiling for x86 works: HOST = x86_64-unknown-linux-gnu TARGET = i686-pc-linux-gnu However, for some reason these configurations do not work: HOST = x86_64-linux-gnu TARGET = x86_64-pc-linux-gnu HOST = x86_64-pc-linux-gnu TARGET = x86_64-linux-gnu Also, I cannot build an isolated compiler: HOST = x86_64-linux-gnu TARGET = x86_64-linux-gnu HOST = x86_64-pc-linux-gnu TARGET = x86_64-pc-linux-gnu HOST = x86_64-unknown-linux-gnu TARGET = x86_64-unknown-linux-gnu HOST = x86_64-glibc-linux-gnu TARGET = x86_64-glibc-linux-gnu Can you explain to me what's the significance of a vendor in a triplet? That is, what's the difference between these triplets? - x86_64-linux-gnu - x86_64-pc-linux-gnu - x86_64-none-linux-gnu - x86_64-glibc-linux-gnu - x86_64-unknown-linux-gnu Maybe there is a piece of documentation, blog post or an article, that you can point me to, which explains this? Which triplet configuration I should use for a host and a target, when I am using regular GNU/Linux distro (Ubuntu MATE 18.04 LTS) and want to target wide range or GNU/Linux distros? Are triples returned by these commands good values for triples? $ gcc -dumpmachine -> x86_64-linux-gnu $ make -v -> x86_64-pc-linux-gnu Thank you, Mateusz