<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Linux交叉編譯Arm64 C++程序

      Linux交叉編譯Arm64 C++程序

      1、開發環境

      os: debian 12 

      2、安裝交叉編譯工具鏈

      1 sudo apt update
      2 sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

      3、交叉編譯

      • 編寫測試代碼
      1 #include <iostream>
      2 
      3 int main() {
      4     std::cout << "Hello, AArch64 Cross-Compilation!" << std::endl;
      5     return 0;
      6 }
      • 使用交叉編譯器編譯
      1 aarch64-linux-gnu-g++ hello.cpp -o hello_aarch64 -static  # 靜態鏈接
      2 # 或
      3 aarch64-linux-gnu-g++ hello.cpp -o hello_aarch64         # 動態鏈接 
      • 檢查可執行文件 
      file hello_aarch64

      輸出:

      hello_aarch64: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=a9c98e6f73b59b9f5b04c9b3f663f15d26bb7de2, for GNU/Linux 3.7.0, not stripped

      4、使用CMake進行交叉編譯

      •  創建工具鏈文件aarch64-toolchain.cmake
       1 # aarch64-toolchain.cmake
       2 
       3 # 基本交叉編譯配置
       4 set(CMAKE_SYSTEM_NAME Linux)
       5 set(CMAKE_SYSTEM_PROCESSOR aarch64)
       6 
       7 # 指定編譯器
       8 set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
       9 set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
      10 
      11 # 指定C++標準 (C++11/14/17/20)
      12 set(CMAKE_CXX_STANDARD 20)
      13 set(CMAKE_CXX_STANDARD_REQUIRED ON)  # 必須使用指定的標準
      14 set(CMAKE_CXX_EXTENSIONS OFF)       # 禁用編譯器特定擴展
      15 
      16 # 搜索路徑設置
      17 set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
      18 set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
      19 set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
      20 set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
      21 
      22 # 可選:指定目標系統根目錄(如果使用sysroot)
      23 # set(CMAKE_SYSROOT /path/to/aarch64/sysroot)
      24 # set(CMAKE_FIND_ROOT_PATH /path/to/aarch64/sysroot)
      • 創建CMakeLists.txt
      cmake_minimum_required(VERSION 3.10)
      project(HelloWorld)
      
      # 設置C++標準
      set(CMAKE_CXX_STANDARD 20)
      set(CMAKE_CXX_STANDARD_REQUIRED ON)
      
      # 生成可執行文件
      add_executable(hello hello.cpp)
      • 構建項目
      mkdir build && cd build
      cmake .. -DCMAKE_TOOLCHAIN_FILE=../aarch64-toolchain.cmake
      make

      5、在x86主機上測試(使用QEMU)

      • 安裝QEMU模擬器
      sudo apt install qemu-user-static
      • 直接使用QEMU

      運行動態鏈接庫版本

      qemu-aarch64-static  -L /usr/aarch64-linux-gnu/ ./hello

      運行靜態鏈接庫版本

      qemu-aarch64-static ./hello_aarch64

       6、編譯boost arm64靜態庫

      編譯前確保交叉編譯依賴

      1 # 安裝常用 ARM64 開發庫
      2 sudo apt-get install \
      3     libssl-dev:arm64 \
      4     libbz2-dev:arm64 \
      5     libicu-dev:arm64 \
      6     zlib1g-dev:arm64

      啟用C++20標準

      1 export CXXFLAGS="-std=c++20"

      下載boost_1_88_0和解壓

      1 wget https://archives.boost.io/release/1.88.0/source/boost_1_88_0.tar.gz
      2 tar -xzvf boost_1_88_0.tar.gz
      3 cd boost_1_88_0

      執行配置

      1 ./bootstrap.sh

      修改project-config.jam文件

      if ! gcc in [ feature.values <toolset> ]
      {
         using gcc : : /usr/bin/aarch64-linux-gnu-gcc ;
      }

      編譯安裝boos庫(含靜態庫和動態庫)

      1 sudo ./b2

      在stage目錄下找一個庫查看

       

      1 file libboost_system.so.1.88.0

       7、編譯POCO Arm64靜態庫

      下載Poco源碼

      1 wget https://github.com/pocoproject/poco/archive/refs/tags/poco-1.14.0-release.tar.gz
      2 tar -xvf poco-1.14.0-release.tar.gz
      3 cd poco-1.14.0-release

      創建Cmake工具鏈 aarch64-toolchain.cmake

       1 # aarch64-toolchain.cmake
       2 set(CMAKE_SYSTEM_NAME Linux)
       3 set(CMAKE_SYSTEM_PROCESSOR aarch64)
       4 
       5 # 指定交叉編譯器
       6 set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
       7 set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
       8 
       9 # 靜態庫專用設置
      10 set(BUILD_SHARED_LIBS OFF)          # 禁用共享庫
      11 set(POCO_STATIC ON)                 # 強制使用靜態庫
      12 
      13 # 查找策略
      14 set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
      15 set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
      16 set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
      17 set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
      18 
      19 # 優化選項(根據目標CPU調整)
      20 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -pipe -march=armv8-a")

      配置靜態庫構建

      1 cmake .. -DCMAKE_TOOLCHAIN_FILE=../aarch64-toolchain.cmake -DCMAKE_INSTALL_PREFIX=../poco-static-aarch64 -DENABLE_XML=ON -DENABLE_JSON=ON -DENABLE_CPPPARSER=ON -DENABLE_PAGECOMPILER=ON -DENABLE_ACTIVERECORD=ON -DENABLE_UTIL=ON -DENABLE_FOUNDATION=ON

      編譯安裝靜態庫

      1 make -j$(nproc)
      2 make install

       8、編譯curl arm64靜態庫

      8.1 交叉編譯OpenSSL

       1 # 下載 OpenSSL
       2 wget https://www.openssl.org/source/openssl-3.0.9.tar.gz
       3 tar -xzvf openssl-3.0.9.tar.gz
       4 cd openssl-3.0.9
       5 
       6 # 編譯 ARM64 OpenSSL
       7 ./Configure linux-aarch64 no-shared \
       8   --prefix=$(pwd)/install_arm64 \
       9   --cross-compile-prefix=aarch64-linux-gnu-
      10 make -j$(nproc)
      11 make install

      8.2 交叉編譯curl靜態庫

       1 wget https://curl.se/download/curl-8.11.1.tar.gz
       2 tar -xzvf curl-8.11.1.tar.gz
       3 cd curl-8.11.1
       4 
       5 ./configure \
       6   --host=aarch64-linux-gnu \
       7   --prefix=$(pwd)/install_arm64 \
       8   --disable-shared \
       9   --enable-static \
      10   --without-zlib \
      11   --with-ssl=$(pwd)/../openssl-3.0.9/install_arm64 \
      12   CC=aarch64-linux-gnu-gcc \
      13   CXX=aarch64-linux-gnu-g++ \
      14   AR=aarch64-linux-gnu-ar \
      15   RANLIB=aarch64-linux-gnu-ranlib

       

       

      posted @ 2025-06-05 09:28  鐘齊峰  閱讀(982)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产成人精品性色av麻豆| 一本加勒比hezyo无码专区| 高清自拍亚洲精品二区| 伊人久久大香线蕉AV网| 四虎亚洲精品高清在线观看 | 丰满人妻熟妇乱又仑精品| 国产成人一区二区三区免费 | 亚洲一区中文字幕人妻| 亚洲国产成人片在线观看无码 | 久久久久综合一本久道| 青青草无码免费一二三区| 91高清免费国产自产拍| 午夜毛片不卡免费观看视频| 国产偷人妻精品一区二区在线| 四虎永久免费精品视频| 色一伊人区二区亚洲最大| 亚洲精品中文字幕二区| 男女18禁啪啪无遮挡激烈网站| 久久99日本免费国产精品| 一区二区三区精品偷拍| 中文字幕亚洲人妻系列| 内射中出无码护士在线| 图片区偷拍区小说区五月| 丰满爆乳一区二区三区| www国产精品内射熟女| 亚洲精品久久7777777国产| 小污女小欲女导航| 成人自拍小视频在线观看| 精品熟女亚洲av在线观看| 亚洲AV永久无码嘿嘿嘿嘿| 熟妇人妻久久春色视频网| 亚洲精品日韩在线观看| 97se亚洲综合自在线| 国产一区二区三区高清视频| 久久天天躁狠狠躁夜夜躁2012| 国产精品制服丝袜白丝| 日韩av一区二区精品不卡| 亚洲欧洲∨国产一区二区三区 | 华人在线亚洲欧美精品| 成都市| 亚洲国产成人综合精品|