{"slug": "panduan-teknikal-compile-llama-cpp-di-debian-12-13-dan-cross-compile-arm64", "title": "Panduan Teknikal: Compile llama.cpp di Debian 12/13 dan Cross Compile ARM64", "summary": "A developer published a technical guide for compiling llama.cpp on Debian 12/13, covering native builds for x86_64 and ARM64, as well as cross-compilation from x86_64 to ARM64. The guide includes steps for enabling OpenBLAS, checking binary architecture, and resolving dependency issues. It targets users running LLM inference on servers, workstations, and single-board computers like Raspberry Pi and Orange Pi.", "body_md": "**1. Pengenalan**\n\nllama.cpp ialah runtime inference LLM berasaskan C/C++ yang popular kerana ringan, pantas, dan sesuai untuk menjalankan model GGUF secara local. Ia boleh digunakan pada:\n\nServer x86_64\n\nWorkstation Linux\n\nMini PC\n\nRaspberry Pi\n\nOrange Pi\n\nSBC ARM64\n\nContainer Linux\n\nDalam deployment sebenar, terdapat dua pendekatan utama:\n\nNative build\n\nCompile terus pada mesin yang akan menjalankan llama.cpp.\n\nCross compile\n\nCompile pada mesin lebih laju (contohnya PC x86_64), tetapi menghasilkan binary untuk platform lain (contohnya ARM64 Orange Pi).\n\n**Bahagian 1 — Persediaan Debian 12/13**\n\n1.1 Install dependency asas\n\n```\nsudo apt update\n\nsudo apt install -y \\\n    git \\\n    build-essential \\\n    cmake \\\n    ninja-build \\\n    pkg-config\n```\n\nKomponen utama:\n\nPackage Fungsi\n\ngit Ambil source code\n\nbuild-essential GCC, G++, make\n\ncmake Build configuration\n\nninja-build Build engine lebih pantas\n\npkg-config Cari library dependency\n\n**Bahagian 2 — Clone llama.cpp**\n\n```\ngit clone https://github.com/ggml-org/llama.cpp.git\n\ncd llama.cpp\n```\n\nSemak versi:\n\n```\ngit log -1 --oneline\n```\n\n**Bahagian 3 — Compile Native (Mesin Sama)**\n\nContoh:\n\nDebian 12/13 x86_64\n\nDebian ARM64\n\nOrange Pi\n\nRaspberry Pi\n\n**3.1 Configure CMake**\n\n```\nBuild menggunakan Ninja:\n\ncmake -B build \\\n    -G Ninja \\\n    -DCMAKE_BUILD_TYPE=Release\n3.2 Compile\nninja -C build -j$(nproc)\n```\n\natau:\n\n```\ncmake --build build\n```\n\nplaintext\n\n**3.3 Hasil build**\n\nSemak:\n\n```\nls build/bin\n```\n\nplaintext\n\nContoh:\n\n```\nllama-cli\nllama-server\nllama-bench\nllama-perplexity\n```\n\nshell\n\n**Bahagian 4 — Enable OpenBLAS (Pilihan)**\n\nOpenBLAS boleh membantu operasi matrix CPU.\n\nInstall:\n\n```\nsudo apt install libopenblas-dev\n```\n\ncmake\n\nBuild:\n\n```\ncmake -B build \\\n    -G Ninja \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    -DGGML_BLAS=ON \\\n    -DGGML_BLAS_VENDOR=OpenBLAS\n```\n\nshell\n\nKemudian:\n\n```\nninja -C build\n```\n\nNota Penting: CMake Cache\n\nJika pernah configure dengan:\n\n```\n-DGGML_BLAS=ON\n```\n\nkemudian buang option tersebut, CMake masih menyimpan konfigurasi lama.\n\nContoh masalah:\n\nBLAS not found\n\nmissing: BLAS_LIBRARIES\n\nPenyelesaian:\n\n```\nrm -rf build\n```\n\nKemudian configure semula.\n\nSentiasa ingat:\n\nCMakeCache.txt menyimpan konfigurasi lama.\n\n**Bahagian 5 — Cross Compile x86_64 → ARM64**\n\nContoh:\n\nPC Debian 12 x86_64\n\n|\n\n|\n\nv\n\nOrange Pi ARM64\n\nKelebihan:\n\nCompile lebih cepat\n\nTidak membebankan SBC\n\nSesuai untuk production image\n\n**5.1 Install ARM64 cross compiler**\n\n```\nsudo apt install -y \\\n    gcc-12-aarch64-linux--gnu\\\n    g++-12-aarch64-linux-gnu\nsudo apt install -y \\\n    gcc-13-aarch64-linux--gnu\\\n    g++-13-aarch64-linux-gnu\n```\n\nSemak:\n\n```\naarch64-linux-gnu-gcc --version\n```\n\n**5.2 Configure cross build**\n\nBersihkan dahulu:\n\n```\nrm -rf build-arm\n```\n\nKemudian:\n\n```\ncmake -B build-arm \\\n    -G Ninja \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    -DCMAKE_SYSTEM_NAME=Linux \\\n    -DCMAKE_SYSTEM_PROCESSOR=aarch64 \\\n    -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \\\n    -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++\n5.3 Compile\nninja -C build-arm -j$(nproc)\n```\n\nHasil:\n\n```\nls build-arm/bin\n```\n\n**Bahagian 6 — Semak Architecture Binary**\n\nGunakan:\n\n```\nfile build-arm/bin/llama-server\n```\n\nContoh output berjaya:\n\n```\nELF 64-bit LSB pie executable,\nARM aarch64,\ndynamically linked\n```\n\nMaksud:\n\nOutput Maksud\n\nELF 64-bit Binary 64-bit\n\nARM aarch64 Untuk ARM64\n\ndynamically linked Perlukan shared library\n\nPIE executable Linux security hardening\n\nBahagian 7 — Semak Dependency .so\n\nJangan guna ldd untuk cross binary\n\nJika compile ARM64 tetapi check pada PC x86:\n\n```\nldd llama-server\n```\n\nboleh gagal:\n\n```\nnot a dynamic executable\n```\n\nSebab:\n\nPC:\n\nx86_64 loader\n\nBinary:\n\nARM64 loader\n\nGunakan readelf\n\naarch64-linux-gnu-readelf \\\n\n-d build-arm/bin/llama-server | grep NEEDED\n\nContoh:\n\n```\nShared library: [libllama.so]\nShared library: [libggml.so]\nShared library: [libstdc++.so.6]\n```\n\nCari semua .so\n\n```\nfind build-arm -name \"*.so\"\n```\n\nContoh:\n\n```\nlibllama.so\nlibggml.so\nlibggml-base.so\nlibggml-cpu.so\n```\n\nSemak architecture:\n\n```\nfile build-arm/bin/*.so\n```\n\nOutput:\n\n```\nARM aarch64\nBahagian 8 — Dynamic vs Static Binary\n```\n\nSemak:\n\n```\nfile llama-server\n```\n\nContoh dynamic:\n\n```\ndynamically linked\n```\n\nPerlu:\n\nlib*.so\n\nContoh static:\n\nstatically linked\n\nTidak perlu .so.\n\n**Bahagian 9 — Installation ke Linux**\n\nPilihan standard\n\nBinary:\n\n```\n/usr/local/bin\n```\n\nLibrary:\n\n```\n/usr/local/lib\n```\n\nContoh:\n\n```\nsudo cp llama-server /usr/local/bin/\nsudo cp llama-cli /usr/local/bin/\n\nsudo cp *.so /usr/local/lib/\n\nsudo ldconfig\n```\n\nPilihan appliance / embedded\n\nUntuk SBC:\n\n```\n/opt/llama.cpp/\n\n    llama-server\n    llama-cli\n    libllama.so\n    libggml.so\n```\n\nKemudian:\n\n```\nexport LD_LIBRARY_PATH=/opt/llama.cpp\n```\n\nSesuai untuk:\n\nOrange Pi\n\nkiosk AI\n\nedge inference node\n\n**Bahagian 10 — Deploy ke Orange Pi**\n\nCopy:\n\n```\nscp build-arm/bin/llama-server \\\norangepi:/usr/local/bin/\nscp build-arm/bin/llama-cli \\\norangepi:/usr/local/bin/\n```\n\nJika perlu:\n\n```\nscp build-arm/bin/*.so \\\norangepi:/usr/local/lib/\n```\n\nPada Orange Pi:\n\n```\nsudo ldconfig\n```\n\nSemak:\n\n```\nuname -m\n```\n\nExpected:\n\n```\naarch64\n```\n\n**Bahagian 11 — Cadangan Production Architecture**\n\nUntuk sistem AI agent:\n\n+----------------+\n\n| Go Agent |\n\n| Tool Router |\n\n+-------+--------+\n\n|\n\n|\n\nHTTP API\n\n|\n\nv\n\n+----------------+\n\n| llama-server |\n\n| llama.cpp |\n\n+----------------+\n\n|\n\n|\n\nGGUF\n\nModel\n\nKelebihan:\n\nGo agent tidak perlu embed model\n\nModel boleh tukar tanpa rebuild\n\nllama.cpp boleh upgrade sendiri\n\nMudah scale ke banyak node\n\nKesimpulan\n\nWorkflow yang stabil:\n\nNative\n\ncmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release\n\nninja -C build\n\nCross Compile ARM64\n\nsudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu\n\nrm -rf build-arm\n\ncmake -B build-arm \\\n\n-G Ninja \\\n\n-DCMAKE_SYSTEM_NAME=Linux \\\n\n-DCMAKE_SYSTEM_PROCESSOR=aarch64 \\\n\n-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \\\n\n-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++\n\nninja -C build-arm\n\nVerification\n\nfile llama-server\n\naarch64-linux-gnu-readelf -d llama-server | grep NEEDED\n\nfind . -name \"*.so\"\n\nDengan proses ini, satu mesin Debian 12/13 boleh menjadi build server untuk menghasilkan node AI ARM64 seperti Orange Pi, Raspberry Pi, atau edge inference appliance.", "url": "https://wpnews.pro/news/panduan-teknikal-compile-llama-cpp-di-debian-12-13-dan-cross-compile-arm64", "canonical_source": "https://dev.to/hardyweb/panduan-teknikal-compile-llamacpp-di-debian-1213-dan-cross-compile-arm64-1pj3", "published_at": "2026-07-14 07:52:24+00:00", "updated_at": "2026-07-14 08:00:26.523368+00:00", "lang": "en", "topics": ["developer-tools", "machine-learning", "large-language-models"], "entities": ["llama.cpp", "Debian", "OpenBLAS", "ARM64", "x86_64", "Raspberry Pi", "Orange Pi", "GGML"], "alternates": {"html": "https://wpnews.pro/news/panduan-teknikal-compile-llama-cpp-di-debian-12-13-dan-cross-compile-arm64", "markdown": "https://wpnews.pro/news/panduan-teknikal-compile-llama-cpp-di-debian-12-13-dan-cross-compile-arm64.md", "text": "https://wpnews.pro/news/panduan-teknikal-compile-llama-cpp-di-debian-12-13-dan-cross-compile-arm64.txt", "jsonld": "https://wpnews.pro/news/panduan-teknikal-compile-llama-cpp-di-debian-12-13-dan-cross-compile-arm64.jsonld"}}