raspberry:cross-platform-compile:cross-compile-overview
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| raspberry:cross-platform-compile:cross-compile-overview [2026/09/02 20:40] – [Raspberry Pi OS vs Debian armhf] oscar | raspberry:cross-platform-compile:cross-compile-overview [2026/09/04 12:41] (current) – [Cross Platform Development for Raspberry] oscar | ||
|---|---|---|---|
| Line 8: | Line 8: | ||
| - **Different Linux/ | - **Different Linux/ | ||
| - | - [[raspberry: | + | - [[raspberry: |
| - | - [[raspberry: | + | |
| - | [[raspberry: | + | - [[raspberry: |
| - | ===== Compatibility rule ===== | + | |
| - | Build against the oldest operating-system release and CPU that the resulting | + | |
| - | binary must support. | + | |
| - | Do not link a Bookworm target against Trixie ARM libraries. Doing so can create | + | - [[raspberry: |
| - | dependencies on newer glibc or library symbols that are unavailable on the | + | |
| - | Bookworm target. | + | |
| - | For example: | ||
| + | ===== Compatibility rule ===== | ||
| + | Build against the oldest operating-system release and CPU that the resulting | ||
| + | binary must support. Do not link a Bookworm target against Trixie ARM libraries. Doing so can create | ||
| + | dependencies on newer glibc or library symbols that are unavailable on the | ||
| + | Bookworm target. For example: | ||
| < | < | ||
| Incorrect: | Incorrect: | ||
| Line 68: | Line 67: | ||
| " | " | ||
| </ | </ | ||
| - | This is one of the most common reasons why **building on a newer distribution for an older target** causes trouble. | + | This is one of the most common reasons why **building on a newer distribution for an older target** causes trouble. It isn't only the **libraries** that matter. The headers matter too. Suppose you compile against Trixie' |
| - | It isn't only the **libraries** that matter. The headers matter too. Suppose you compile against Trixie' | + | |
| * API definitions | * API definitions | ||
| * feature macros | * feature macros | ||
| Line 78: | Line 76: | ||
| * library-specific APIs | * library-specific APIs | ||
| So the ideal relationship is: | So the ideal relationship is: | ||
| - | < | ||
| - | | ||
| - | ┌─────────────────┐ | ||
| - | │ headers | ||
| - | │ libraries | ||
| - | │ linker files │ | ||
| - | │ ABI │ | ||
| - | └────────┬────────┘ | ||
| - | │ | ||
| - | ▼ | ||
| - | cross compiler | ||
| - | │ | ||
| - | ▼ | ||
| - | your executable | ||
| - | </ | ||
| That's why a **target-specific sysroot** is the clean solution. | That's why a **target-specific sysroot** is the clean solution. | ||
raspberry/cross-platform-compile/cross-compile-overview.1788381608.txt.gz · Last modified: by oscar
