Single Status Update
How do people seriously develop software for this? The entire OS is a monstrosity. If somebody with as much experience and broad skillset as I have can be completely defeated by this thing, then I don't understand how it works for anybody.
Originally tried to install steam-dev on Mint. Wouldn't take, complained manifest file sizes didn't match. So I trash that entire VM and install Ubuntu 14.04. After two days of confusing unhelpful error messages I figure out I'm supposed to do apt-get update and THEN try to install the chroot environment. OK that is supposedly working now.
So I bring in the code to my game. This is not an open source game. I must build this game in a way that the resulting binary is redistributable. How do I do that? I have no fucking idea. So I start just trying to compile the son of a goddamn bitch as step #1 because I need to make sure that's working at a basic level. CMake can't find libpng headers. Because something so simple doesn't come pre-installed on a kiddie candy piece of shit distro like Ubuntu.
So I apt-get install libpng-dev. And I end up with libpng12 from like, 8000 years ago. Great!!! That is FANTASTIC!!!!!! Because my PROGRAM needs libpng 1.6.12 and I have NO fucking idea how to build it, there are no DIRECTIONS anywhere on how to build it, and, after 2 hours of googling for any sort of advice I have found NOTHING. And everybody on IRC can just stare blankly at me like I'm a fucking idiot for not knowing what a deb is.
I am goddamn tired of this, it is all bullshit. What would be simple problems anywhere else, that in most cases should not exist to begin with, are impossible to do anything about without already knowing every possible arcane command line invocation for the entire operating system. There are NO inroads to this shit. You either already know it or you have to get somebody who does to do it for you.
- Show previous comments 5 more
I must build this game in a way that the resulting binary is redistributable. How do I do that?
There is no way to guarantee a single binary will run on all flavors of Linux.
What usually happens is you target the most popular ones, e.g. Ubuntu, Red Hat, Mint. See the downloads page for Blender, there is about 10 or 12 packages for Linux (probably half if you ignore the 32-bit and 64-bit distinction).
I hope you enjoyed that rant, can't say I did though, information about compiling stuff *is* out there (e.g. StackOverflow) and I'm sure if a long-time Unix/Linux developer suddenly dived into developing on Windows they would feel equally overwhelmed and frustrated at first.
There is the Linux Standard Base (LSB) which is supposed to address the problem. Unfortunately, it's not followed by most distributions. But, still, it's at least a start. Until it or something similar is more widely followed, the best advice is what andrewj said: target the most popular distros, like Ubuntu, Debian, Mint, and Fedora. Hell, SteamOS is based on Debian, so there ya go.
Ubuntu shipping with old libpng headers doesn't surprise me, because Ubuntu is a piece of shit. Unfortunately, it and its derivatives are the most popular for desktop users.
Installing libpng from source should be pretty easy as long as its dependencies are installed. It uses the GNU Build System (aka, "autotools"), which is pretty common. The basic steps for any software that uses it are:
./configure --help (to see what configuration options are available)
./configure --prefix=/usr (or whever you want to install it)
make install (or make install DESTDIR=/some/folder if you want to make package)
That's sorta the equivalent of loading up a solution in Visual Studio, changing the project's configuration, and building it.