[fpc-pascal] Will the size of an executable depend on the uses clause

Bo Berglund bo.berglund at gmail.com
Wed Jun 16 12:26:54 CEST 2021


On Wed, 16 Jun 2021 12:08:26 +0200 (CEST), Michael Van Canneyt via fpc-pascal
<fpc-pascal at lists.freepascal.org> wrote:

>FPC/lazarus tell you which units are unused, and in the Lazarus IDE you can use the
>quick actions of the message dialog to quickly remove all unused units.
>I use it all the time.

Thanks, I will have a look and see what happens if you tell me where in Lazarus
to look.

My use case here is that I created a Windows version of Linux "uptime" by
starting in Lazarus with a new Project and selecting Program.
The resulting program looks like this:

program uptime;
//Uptime shows the elapsed time as days-hours-minutes-secods since system start
{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  Classes, SysUtils
  { you can add units after this };

function FormatUpTime(Tdiff: QWord): string;
var
  t, d, h, m, s: integer;
begin
  t := Tdiff div 1000; //To get seconds
  s := t mod 60;
  m := (t div 60) mod 60;
  h := (t div 3600) mod 24;
  d := (t div 86400);
  if d > 0 then
    Result := Format('%d %.2d:%.2d:%2d',[d, h, m, s])
  else
    Result := Format('%.2d:%.2d:%2d',[h, m, s]);
end;

begin
  writeln(FormatUptime(GetTickCount64));
end.

I had to add SysUtils to make it work but Lazarus put Classes in there by
itself.
Since the final binary size after using strip -s on the exe file is 271 kb it
seems a bit big!
Or is there a lot behind the scenes I have missed?

I see many command line utilities (not written by me) that are *much* smaller
and still do much more....


-- 
Bo Berglund
Developer in Sweden



More information about the fpc-pascal mailing list