Platform Support
libmem is designed to be cross-platform, supporting major operating systems and processor architectures used in modern computing.Operating Systems
libmem supports three major operating system families:Windows
Full support for Windows 7 and later
Linux
Complete support for modern Linux distributions
FreeBSD
BSD support with most features working
Architecture Support Matrix
The following table shows the current support status for each combination of operating system and CPU architecture:Status indicators:
- Full Support: 100% working, thoroughly tested
- Mostly Working: Core features working, minor issues may exist
- Untested: Should work but hasn’t been extensively tested
x86 (32-bit Intel/AMD)
Windows x86
Status: Full Support ✓Fully tested and production-ready
Linux x86
Status: Full Support ✓Fully tested and production-ready
FreeBSD x86
Status: Mostly Working ✓Core features working reliably
x64 (64-bit Intel/AMD)
Windows x64
Status: Full Support ✓Fully tested and production-ready
Linux x64
Status: Full Support ✓Fully tested and production-ready
FreeBSD x64
Status: Mostly Working ✓Core features working reliably
ARM (32-bit)
Windows ARM
Status: Untested ⚠️Not extensively tested yet
Linux ARM
Status: Untested ⚠️Not extensively tested yet
FreeBSD ARM
Status: Untested ⚠️Not extensively tested yet
ARM64/AArch64 (64-bit ARM)
Windows ARM64
Status: Untested ⚠️Not extensively tested yet
Linux ARM64
Status: Untested ⚠️Not extensively tested yet
FreeBSD ARM64
Status: Untested ⚠️Not extensively tested yet
ARM and ARM64 support is built into libmem but hasn’t been extensively tested. If you’re using libmem on ARM platforms, please report any issues on GitHub.
Platform-Specific Details
Windows
Requirements
- Minimum OS: Windows 7
- Recommended: Windows 10/11
- SDK: Windows SDK required for building
- Dependencies: User32.lib, Psapi.lib, Ntdll.lib, Shell32.lib
- x86 (32-bit) - Full Support
- x64 (64-bit) - Full Support
- ARM (32-bit) - Untested
- ARM64 (64-bit) - Untested
Linux
Requirements
- Kernel: Modern Linux kernel with ptrace support
- Distributions: Debian, Ubuntu, Arch, Fedora, and others
- Dependencies: libdl (-ldl), Linux headers for building
- Build Tools: GCC, G++, CMake, Make
- x86 (32-bit) - Full Support
- x64 (64-bit) - Full Support
- ARM (32-bit) - Untested
- ARM64/AArch64 (64-bit) - Untested
- Android support is included (same as Linux)
- Requires appropriate permissions for process manipulation
FreeBSD
Requirements
- OS: FreeBSD with procfs mounted
- Dependencies: libdl, libkvm, libprocstat, libelf
- Build Tools: Clang, Clang++, CMake, Make
- Special Setup: procfs must be mounted at
/proc
- x86 (32-bit) - Mostly Working
- x64 (64-bit) - Mostly Working
- ARM (32-bit) - Untested
- ARM64/AArch64 (64-bit) - Untested
-
Add to
/etc/fstab: -
Mount procfs:
Architecture Detection
libmem automatically detects the target architecture at runtime and configures itself accordingly. The following architectures are detected:- x86_16: 16-bit x86 (legacy)
- x86_32: 32-bit x86 (i686, i386)
- x86_64: 64-bit x86 (AMD64, x64)
- ARMv7: 32-bit ARM
- ARMv8: 64-bit ARM (AArch64)
- Thumb: ARM Thumb mode variants
Dependencies
libmem bundles most of its dependencies, but some platform-specific libraries are required:All Platforms
- capstone (included) - Disassembly engine
- keystone (included) - Assembly engine
- LIEF (included) - Binary parsing
- libstdc++ - C++ standard library
- libmath - Math library
Platform-Specific
Windows:- Windows SDK (user32.lib, psapi.lib, ntdll.lib, shell32.lib)
- libdl (-ldl)
- libdl (-ldl)
- libkvm (-lkvm)
- libprocstat (-lprocstat)
- libelf (-lelf)
Testing Your Platform
To verify libmem works correctly on your platform:- Build the tests using
-DLIBMEM_BUILD_TESTS=ON - Run the test suite
- Check that core functionality works
Next Steps
Installation Guide
Install libmem for your platform
Getting Started
Start building with libmem