Also, do y’all call main() in the if block or do you just put the code you want to run in the if block?

  • onlinepersona@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    7 months ago

    Can someone explain to me how to compile a C library with “main” and a program with main? How does executing a program actually work? It has an executable flag, but what actually happens in the OS when it encounters a file with an executable file? How does it know to execute “main”? Is it possible to have a library that can be called and also executed like a program?

    Anti Commercial-AI license

    • namingthingsiseasy@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      6 months ago

      There are a lot of other helpful replies in this thread, so I won’t add much, but I did find this reference, which you could read if you have a lot of free time. But I particularly liked reading this summary:

      • _start calls the libc __libc_start_main;
      • __libc_start_main calls the executable __libc_csu_init (statically-linked part of the libc);
      • __libc_csu_init calls the executable constructors (and other initialisatios);
      • __libc_start_main calls the executable main();
      • __libc_start_main calls the executable exit().