Compilation Build Challenges
The cluster focuses on the difficulties and frustrations of compiling and building software from source, particularly C/C++ projects, highlighting issues with dependencies, cross-compilation, toolchains like GCC and glibc, and comparisons to easier languages like Go.
Activity Over Time
Top Contributors
Keywords
Sample Comments
I don't think a single person here has mentioned cross-compiling. As someone who maintains a cross-compiled distribution of Unix (for the iPhone), when someone writes software that involves anything remotely complex (maybe shared libraries), if you aren't using autoconf and libtool you are a cruel sadistic bastard (and if you think uname is /ever/ appropriate to use in a build environment, you are simply naive).
I donāt know man, Iāve written a lot of C and C++ and other languages and the sheer effort to get your average C project to compile is much greater than others. The dependencies arenāt listed anywhere, they are rarely compatible with the versions available via your package manager (so now youāre building more things from source), ./configure regularly runs into problems (ācouldnāt guess which platform you were onā, āyour version of grep is incompatibleā, etc). Itās just a big mess of yak sh
glibc and buildtools can be a bit of a pain to work with. Maybe he was exposed to that during cross-compilation.
Don't forget it's dependencies like the Linux kernel developers or GCC etc.
Any particular reason why build environments cannot rely on cross compilation for producing OS distributions?
Well, let's just say a lot of things don't work in linux either. Depending what you're building, sometimes it's reliant on a certain gcc version, or distro. Generally speaking, compile from source is usually the last resort if the package can't be found via apt-get, and occasionally you'll have to tweak the makefile or the ./configure script settings. Any time you're building something that isn't extremely popular, you're likely to get build problems.
I will take Windows's "sometimes there's very little you can do about it" against Linux's "compile it and all its dependencies (probably versions of those dependencies from the same time period, and possibly even their dependencies) from source" any day.
You don't control your device OS or otherwise have access to a machine you do, your OS does not offer modern packages, and you don't have the ability to otherwise pull in development toolchain resources.... yet it's supposed to be the projects problem you can't compile something started in 2021 from source on your older setup?I get your current situation is less than ideal for you but at some point you have to accept the project is not the source of painfulness associated
1. You have to audit/trust any software whether or not itās distributed as part of your OS2. What is there to configure?3. Itās a Go program, so compilation happens transparently on installation provided the developers donāt release broken code. This isnāt the C/C++ world where you have complex bespoke build systems that only seem to work on the developersā machines.
At that rate, why not just install the toolchain and compile from source?