Ada is unique as a programming language in some aspects. One of them is called elaboration. Before the execution of a main program, all library units needed by the main program are elaborated. That usually consists of initializing variables and setting up some resources. Packages for example may have their explicit elaboration code between a final begin and end statement in the package body. Most of the time, however, the elaboration code is generated automatically by the compiler. (see the GNAT User Guide for some explanations)
The language requires the compilers to check if the code to be executed is already elaborated. GNAT therefor generates routines called package_name.elabs and package_name.elabb containing the elaboration code. After calling the respective routines it sets a variable to 1 indicating that the package had been elaborated.
There are several ways to tell the compiler it should optimize away the elaboration code. The easiest way is to make a package pure. A package may only be pure if all parents and all withed packages are also pure.
package AVR.Strings is pragma Pure;
Two other language defined pragmas are pragma Preelaborate and pragma Preelaborable_Initialization. See the chapter 10.2.1 in the Ada Reference Manual. Pragma Preelaborate typically leads to no call of elaboration code, but the mentioned variable is still generated and set to 1.
GNAT provides additional pragmas for a more fine grained control. See the references on pragma Pure_Function, pragma Static_Elaboration_Desired