Accelerating Computer Vision on ARM Linux aarch64 with ACL Pack
ARM Linux aarch64 is everywhere: edge gateways, industrial cameras, robots, and handheld devices. But until recently, most high-performance vision libraries treated it as a second-class citizen.
ACL Pack v1.0.3 now ships native Linux aarch64 static libraries alongside Android arm64-v8a, with the same public API and the same license file.
Why ARM Linux aarch64 matters
- Same silicon, different OS. Many devices run embedded Linux instead of Android.
- No Java / JNI overhead. Pure native C++ integration.
- Smaller binaries. The Linux aarch64
libacl.ais roughly 30% smaller than the Android build for the same tier.
Toolchain
| Component | Version |
|---|---|
| Cross compiler | aarch64-linux-gnu-g++ 9.4 |
| Validation | qemu-aarch64-static 4.2 |
| SDK | ACL Pack v1.0.3 Linux aarch64 |
Minimal example
cpp
#include <acl/acl.h>
#include <acl/api.h>
#include <cstdint>
#include <vector>
int main() {
int rv = acl::init("/path/to/license.dat");
if (rv != 0) return rv;
const int w = 1920, h = 1280;
std::vector<uint8_t> src(w * h * 3), dst(w * h * 3);
acl::neon::cvtcolor::channelSwap<acl::BGR2RGB>(
src.data(), dst.data(), w, h
);
return 0;
}Build:
bash
aarch64-linux-gnu-g++ -O3 -I./include main.cpp ./lib/libacl.a \
-o demo_aarch64
qemu-aarch64-static ./demo_aarch64Validation
ACL Pack v1.0.3 Linux aarch64 passes the same 5-axis stock_qa gate as Android:
- Zip structure correct.
- Positive
initreturns0. - Negative
init(nullptr)returns-1001. - Pre-init operator call returns
-1001. - 6-operator demo PASS.
Package sizes
| Tier | Linux aarch64 zip | libacl.a |
|---|---|---|
| starter | 0.82 MB | 3.94 MB |
| pro | 1.13 MB | 4.89 MB |
| business | 1.22 MB | 5.29 MB |
Try it
Download the Linux aarch64 build from the v1.0.3 release and read the integration guide.
Questions? See the API Reference or open an issue on GitHub.