No announcement yet.

Linux Preparing To Finally Remove Support For The a.out Format

  • Filter
  • Time
  • Show
Clear All
new posts

  • #21
    Originally posted by bug77 View Post
    Wth, the first program I wrote in C for Linux produced an a.out. You're telling me that won't work anymore? One can't write a first program, you know? Not to mention I barely remember a shred of C these days.

    Farewell a.out, it's been nice knowing you.
    It will still work.

    ”./a.out” is simply a name, it is ELF format underlying.


    • #22
      Originally posted by caligula View Post
      I guess this is different, but many C tutorials introduce the concept of 'a.out' executable to save some typing when compiling stuff:

      $ echo "#include..." > hello.c
      $ gcc hello.c
      $ ./a.out

      Imagine the horror if you had to write this instead:

      $ gcc hello.c -o hello
      $ ./hello

      Requires 9 characters more.
      Not true, l./a.out” is just some nameing schema here, it has nothing to do with the a.out format that is deprecated here.


      • #23
        Originally posted by bug77 View Post

        Probably the same scripts that rely on holding down space to overheat the CPU?
        (For those that have been living under a rock: )
        lol. Haven't seen that one before.


        • #24
          Originally posted by shmerl View Post

          What kind of scripts rely on a.out? And if some do, they can be rewritten so nothing would rely on it. Good opportunity to fix obsolete stuff.
          Sure, the scripts should have been specifying the output name. But my question still remains: "for what?" You are going to break some scripts, you should have a good reason. And I don't really think that confusing a few people for who all of these are true is a good reason:
          • They know a.out is a binary format, and not just "the default name gcc writes".
          • They know enough to care about the difference between a.out and ELF.
          • They have never inspected that file in the last 15 years with the "file" util. They have not once used any ELF tools on it and wondered why their ELF tools were working on an "a.out" binary.
          • They have not read the docs on the default output formats.
          You said yourself that the scripts shouldn't rely on a.out. I would say the same about tutorials. That's a better way to reduce confusion IMO.


          • #25
            It is still confusing that a.out is an elf. If you like misleading mess, then yeah, no need to fix it. But I think it's just an inertia thinking.


            • #26
              Now what am I supposed to do with all my old SCO software? IBM <coff> approves of this message.


              • #27
                I started using Linux in 1997 and I never saw an a.out binary.

                And yes, at that time in the industrial world you would use DOS and write your low level code to handle the HW directly.

                Been there, done that, got the t-shirt.


                • #28
                  ffs now we will be stuck with elfs only :/


                  • #29
                    Originally posted by rmnscnce View Post

                    This will make some people unhappy and some scripts to break, but I wish the C compilers by default now take the route of naming the executable binary generated whatever name the file containing main() (or whatever the entry point is -- I don't make the rules) is, and get rid of the filename extension ("main.c" compiles to "main")
                    Well, if you have a foo.c, you can just type 'make foo' and get what you want-- does not even require a makefile. And if your needs are more complex than that, you should probably be using some sort of build system anyway rather than invoking the compiler manually...


                    • #30
                      Originally posted by shmerl View Post
                      It is still confusing that a.out is an elf. If you like misleading mess, then yeah, no need to fix it. But I think it's just an inertia thinking.
                      Sure, if you were writing something now, you wouldn't name it a.out. I actually like the idea I saw where the file in named after the source file with the main() function. You call it inertia, I call it not breaking things to solve a problem that is exceptionally minor. I'm all for change if when there's a benefit to be had or a non-trivial problem to be solved.

                      So you got confused. What's the actual outcome? What didn't work cause you got confused? What incorrect action did it prompt you to take? What documents did you have to pore over to get your stuff to work?

                      If you want confusion, what the hell is /usr? What about /etc? /var? We should rename those to make everything clearer right?