The standard binary output format generated by the linker for the Lynx target is a machine language program with an executable header. It is of course possible to change this behaviour by using a modified startup file and linker config.
You can also produce real carts with directory structures and encrypted
headers by modifying the startup and linker config files. There is a simple
example archive called lynx-cart-demo
in the
contrib directory
that shows how to create a complete bootable Lynx cart.