Linux and mac gui apps need that switch too?
afaik, no. That is a Windows only switch. See also
here.
For windows applications this is required so that the lazarus application automatically assigns input and output handles to a console. If you don't uncheck that configuration option, then there will be no input and output handles assigned and that will cause an I/O error when invoking a call to read/write.
afaik input and output handles are always available under Linux and MacOS.
So, for Linux and Mac this should work out of the box. In case you don't have any visible output then you can use the run parameter options. In case you have that configured to automatically close your terminal on program exit, then you should add a readln just before your app terminates (which works in a similar way when using Windows). Most small test applications exits too quickly, in which case you are unable to see/read the terminal output.