Creating and Using Libraries

Caution When Mixing Shared and Archive Libraries

 

Example 3: Hidden Definitions

 

This example shows how mixing archive libraries and shared libraries

 

can lead to multiple definitions in the application and unexpected

 

results. If one of the definitions happens to be a data symbol, the results

 

can be catastrophic. If any of the definitions are code symbols, different

 

versions of the same routine could end up being used in the application.

 

This could lead to incompatibilities.

 

Duplicate definitions can occur when a dependent shared library is

 

updated to refer to a symbol contained in the program file but not visible

 

to the shared library. The new symbol import must be satisfied somehow

 

by either adding the symbol to the library or by updating the shared

 

library dependency list. Otherwise the application must be relinked.

 

Using an archive version of libc in an application using shared libraries

 

is the most common cause of duplicate definitions. Remember that

 

symbols not referenced by a shared library at link time will not be

 

exported by default.

 

 

Duplicate definitions can be avoided if any or all symbols that may be

NOTE

 

referenced by a shared library are exported from the application at link

 

time. Shared libraries always reference the first occurrence of a

 

definition. In the following example the first definition is in the

 

executable file, a.out. See the -Eoption and +e symbol option described

 

in ld(1) and “Exporting Symbols from main with -E” on page 81,

 

“Exporting Symbols with +ee” on page 81, and “Exporting Symbols with

 

+e” on page 79.

 

 

The following example illustrates this situation. Suppose you have a

 

 

main program, main(), and three functions, f1(), f2(), and f3() each

 

in a separate source file. main() calls f1(), f2(), and f3().

 

$ cc -c main.c

Compile to relocatable code.

 

$ cc -c +z f1.c f2.c f3.c

Compile to position-independent code.

Chapter 5

171

Page 171
Image 171
Kenwood HP 9000 manual Example 3 Hidden Definitions

HP 9000 specifications

The Kenwood HP 9000 is a cutting-edge home appliance designed for culinary enthusiasts seeking to elevate their cooking experience. This powerful kitchen machine stands out for its multi-functionality, combining the roles of a food processor, blender, and mixer into one sleek unit.

One of the flagship features of the Kenwood HP 9000 is its robust motor, which delivers exceptional performance across various tasks. With a powerful motor that operates at multiple speeds, users can tackle everything from kneading dough to finely chopping vegetables with ease. The variable speed control allows for precision, ensuring that every ingredient is processed to perfection according to individual preferences.

The HP 9000 comes equipped with a variety of attachments that enhance its versatility. Among these are a stainless-steel mixing bowl, a dough hook, a whisk, and multiple cutting blades. This extensive array of accessories means that users can whip up delightful pastries, create homemade pasta, or prepare smoothies with minimal hassle. Each attachment is designed for easy attachment and removal, making the transition between tasks seamless and efficient.

Another key characteristic of the Kenwood HP 9000 is its advanced safety features. The design incorporates mechanisms that prevent the machine from operating unless all components are securely in place. This not only gives users peace of mind while cooking but also ensures longevity for the appliance, reducing the risk of wear and tear over time.

In terms of design, the HP 9000 is both modern and aesthetically pleasing. Its ergonomic shape and compact size make it easy to store and use in various kitchen settings, while the high-quality materials used in its construction guarantee durability and longevity. The user interface is intuitive, with clearly labeled buttons that facilitate operation, ensuring that even novice cooks can navigate the machine effortlessly.

Additionally, the Kenwood HP 9000 features innovative technologies, such as an integrated digital timer and a pulse function for added control during food preparation. These features enhance cooking precision, allowing users to achieve consistent results every time.

In summary, the Kenwood HP 9000 is an exceptional kitchen appliance that combines power, versatility, and safety. With its advanced features and user-friendly design, it is an ideal choice for anyone looking to simplify their cooking process while achieving professional-level results. Whether you're whipping up a quick meal or tackling an elaborate recipe, the HP 9000 is a reliable companion that will inspire culinary creativity.