Can I prevent Lazarus from linking my program to unnecessary libs?

52 Views Asked by At

I'm trying to package a GUI program built with Lazarus into a Debian package, and get the following messages:

dpkg-shlibdeps: warning: package could avoid a useless dependency if program_name was not linked against libgmodule-2.0.so.0 (it uses none of the library's symbols)

dpkg-shlibdeps: warning: package could avoid a useless dependency if program_name was not linked against libcairo.so.2 (it uses none of the library's symbols)

dpkg-shlibdeps: warning: package could avoid a useless dependency if program_name was not linked against libatk-1.0.so.0 (it uses none of the library's symbols)

My current compiler options are:

Info: (lazarus) Executable="/usr/bin/fpc"
Info: (lazarus) Param[0]="-MObjFPC"
Info: (lazarus) Param[1]="-Scghi"
Info: (lazarus) Param[2]="-CX"
Info: (lazarus) Param[3]="-O3"
Info: (lazarus) Param[4]="-Xs"
Info: (lazarus) Param[5]="-XX"
Info: (lazarus) Param[6]="-l"
Info: (lazarus) Param[7]="-vewnhibq"
Info: (lazarus) Param[8]="-Fi/path/to/program_folder/lib/arm-linux"
Info: (lazarus) Param[9]="-Fu/path/to/program_folder/TLazSerial/lib/arm-linux"
Info: (lazarus) Param[10]="-Fu/usr/lib/lazarus/2.0.10/components/ideintf/units/arm-linux/gtk2"
Info: (lazarus) Param[11]="-Fu/usr/lib/lazarus/2.0.10/components/lazcontrols/lib/arm-linux/gtk2"
Info: (lazarus) Param[12]="-Fu/usr/lib/lazarus/2.0.10/lcl/units/arm-linux/gtk2"
Info: (lazarus) Param[13]="-Fu/usr/lib/lazarus/2.0.10/lcl/units/arm-linux"
Info: (lazarus) Param[14]="-Fu/usr/lib/lazarus/2.0.10/components/lazutils/lib/arm-linux"
Info: (lazarus) Param[15]="-Fu/usr/lib/lazarus/2.0.10/packager/units/arm-linux"
Info: (lazarus) Param[16]="-Fu/path/to/program_folder/"
Info: (lazarus) Param[17]="-FU/path/to/program_folder/lib/arm-linux/"
Info: (lazarus) Param[18]="-FE/path/to/program_folder/"
Info: (lazarus) Param[19]="-o/path/to/program_folder/program_name"
Info: (lazarus) Param[20]="-dUseCThreads"
Info: (lazarus) Param[21]="-dLCL"
Info: (lazarus) Param[22]="-dLCLgtk2"
Info: (lazarus) Param[23]="program_name.lpr"

Is there a way to prevent my program from being linked against the libraries I don't use?

1

There are 1 best solutions below

0
Marco van de Voort On BEST ANSWER

I think these are not useless. Probably Lazarus simply links to all GTK libs (for e.g. static linking order purposes). These libs are used indirectly via GTK anyway.

So the warning is not strictly wrong, but also not strictly 100% correct.