# fminshared

Specifies that a compilation unit is a component of a main program and should not be linked as part of a shareable object.

## Syntax

Linux: | -fminshared

macOS: | -fminshared

Windows: | None

## Arguments

None

## Default

OFF | Source files are compiled together to form a single object file.

## Description

This option specifies that a compilation unit is a component of a main program and should not be linked as part of a shareable object.

This option allows the compiler to optimize references to defined symbols without special visibility settings. To ensure that external and common symbol references are optimized, you need to specify visibility hidden or protected by using the -fvisibility, -fvisibility-hidden, or -fvisibility-protected option.

Also, the compiler does not need to generate position-independent code for the main program. It can use absolute addressing, which may reduce the size of the global offset table (GOT) and may reduce memory traffic.

## IDE Equivalent

None

## Alternate Options

None

Parent topic: Data Options

## See Also

fvisibility compiler option