Tagged articles
6 articles
Page 1 of 1
Liangxu Linux
Liangxu Linux
Aug 31, 2025 · Fundamentals

How Linkers Resolve Virtual Addresses Before a Program Runs

This article explains why C/C++ function and global variable addresses are fixed at link time, how modern operating systems provide each process with a private virtual address space, the role of ABI and linker scripts in defining segment layout, and how the loader later maps those virtual addresses to physical memory.

C++ELFLinker
0 likes · 6 min read
How Linkers Resolve Virtual Addresses Before a Program Runs
IT Services Circle
IT Services Circle
Jul 19, 2025 · Fundamentals

How Linkers Assign Virtual Addresses Before Your Program Runs

This article explains how linkers determine virtual memory addresses during linking, describes the operating system's per‑process virtual address space, outlines ABI and ELF conventions including default base addresses and linker scripts, and shows how the loader later maps those virtual addresses to physical memory.

ELFLinkerVirtual Memory
0 likes · 5 min read
How Linkers Assign Virtual Addresses Before Your Program Runs
Liangxu Linux
Liangxu Linux
Sep 17, 2024 · Fundamentals

Unlocking Automatic Module Initialization with Linux Kernel Initcall on STM32

This guide explains how to replicate Linux kernel's initcall mechanism in STM32 projects by using function‑pointer sections, modifying the linker script, and defining ordered initialization macros to replace sequential main‑function calls, enabling modular and loosely‑coupled code execution.

InitcallLinux kernelSTM32
0 likes · 8 min read
Unlocking Automatic Module Initialization with Linux Kernel Initcall on STM32
JD Cloud Developers
JD Cloud Developers
May 22, 2024 · Mobile Development

How I Reduced a Rust Android Dynamic Library from 495KB to 95KB

This article explains how the size of a Rust‑based Android dynamic library, initially 495 KB, was dramatically reduced to 95 KB through compiler optimization levels, link‑time optimization, panic handling changes, stripping unused sections, and custom linker scripts, providing practical tips for mobile developers.

AndroidDynamic LibraryLTO
0 likes · 11 min read
How I Reduced a Rust Android Dynamic Library from 495KB to 95KB
JD Tech Talk
JD Tech Talk
May 22, 2024 · Mobile Development

Optimizing Rust Android Dynamic Library Size: Strategies and Results

This article details how the author reduced the size of a Rust‑based Android JNI dynamic library from 495 KB to 95 KB by adjusting compiler optimization levels, enabling LTO, switching panic handling to abort, removing unused strings, applying panic_immediate_abort, and crafting a custom linker script, while providing code snippets and size comparison tables.

AndroidBinary Size OptimizationLTO
0 likes · 11 min read
Optimizing Rust Android Dynamic Library Size: Strategies and Results
Liangxu Linux
Liangxu Linux
Dec 24, 2023 · Backend Development

Mastering GNU Linker Scripts: Control Binary Layout and Memory Mapping

This guide explains how GNU ld linker scripts work, covering their purpose, basic concepts like sections, symbols, VMA/LMA, the syntax of SECTIONS, INPUT, OUTPUT, and other commands, with practical examples and code snippets for embedded and desktop ELF binaries.

BinaryELFLinker
0 likes · 30 min read
Mastering GNU Linker Scripts: Control Binary Layout and Memory Mapping