暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【Linux】x86_64 ubuntu16虚拟机交叉编译Aarch64平台软件

hCodeisDawn 2021-09-16
3157

概述:

    本文以dwncs项目为示例,简述x86_64 ubuntu16虚拟机中交叉编译Aarch64目标机的可执行文件。本文主要叙述系统环境、交叉编译器搭建、项目依赖库编译、项目编译、缺陷等五个部分(文档用于个人记录,某些细节说明不到位)。


一、系统环境

1、开发环境


2、目标环境


二、交叉编译环境

1、查看aarch64-linux-gcc交叉编译器

    Shell:apt search aarch64-linux


2、安装交叉编译器

    Shell:sudo apt install g++-aarch64-linux-gnu

    Shell:sudo apt install gcc-aarch64-linux-gnu


3、测试交叉编译环境


三、依赖库交叉编译

注:dwncs依赖类库

libffi:https://github.com/libffi/libffi

libwebsockets:https://github.com/warmcat/libwebsockets

libjson-c:https://github.com/json-c/json-c

oepnssl:https://github.com/openssl/openssl

libzlog:https://github.com/HardySimpson/zlog

1、json-c

    (1)解压json-c-master.zip(偷懒双击拖出)

    (2)修改CMakeLists.txt文件

    SET(CMAKE_SYSTEM_NAME Linux)
    SET(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")
    SET(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")

        (3)mkdir build && cd build

        (4)执行cmake(注意安装目录,避免冲掉其他交叉编译环境)

      cmake .. -DCMAKE_INSTALL_PREFIX=/home/hcy/Public/dev/cross-complie/aarch64/json-c

          (5)make && make install

          (6)安装目录


      2、libffi

          (1)解压libffi-3.3.tar.gz文件

          (2)mkdir build && cd build(重复过程不做截图)

          (3)执行configure

        ../configure CC=aarch64-linux-gnu-gcc --enable-shared --prefix=/home/hcy/Public/dev/cross-complie/aarch64/ffi --host=aarch64-linux-gnu

            (4)make && make install

            (5)安装目录


        3、openssl(version 1.0.2;websockets依赖环境,优先安装)

            (1)解压openssl-OpenSSL_1_0_2-stable.zip文件

            (2)执行config

          ./config no-asm -shared --prefix=/home/hcy/Public/dev/cross-complie/aarch64/openssl

              (3)修改Makefile文件(修改编译器;删除-m64)


              (4)make && make install(openssl编译安装很慢)

              (5)安装目录


          4、websockets

              (1)解压libwebsockets-main.zip文件

              (2)修改CMakeLists.txt文件

            SET(CMAKE_SYSTEM_NAME Linux)
            SET(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")
            SET(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")

                (3)mkdir build && cd build

                (4)执行cmake(设置openssl头文件及类库目录)

              cmake .. -DCMAKE_INSTALL_PREFIX=/home/hcy/Public/dev/cross-complie/aarch64/websockets \
              -DLWS_OPENSSL_INCLUDE_DIRS=/home/hcy/Public/dev/cross-complie/aarch64/openssl/include \
              -DLWS_OPENSSL_LIBRARIES="/home/hcy/Public/dev/cross-complie/aarch64/openssl/lib/libcrypto.so;/home/hcy/Public/dev/cross-complie/aarch64/openssl/lib/libssl.so;"

                  (5)make && make install

                  (6)安装目录


              5、zlog

                  (1)解压zlog-master.zip文件

                  (2)为autogen.sh脚本赋权

                  (3)设置默认的shell为bash

                  Shell:sudo dpkg-reconfigure dash(选择No)

                  (4)执行autogen.sh

                  (5)修改configure文件rpl_realloc->realloc

                  (6)mkdir build && cd build

                  (7)执行configure

                CC=aarch64-linux-gnu-gcc ../configure --prefix=/home/hcy/Public/dev/cross-complie/aarch64/zlog --host=aarch64-linux-gnu

                    (8)make(分步执行make、make install;&&执行有问题)

                    (9)make install

                    (10)安装目录


                五、项目编译

                1、Makefile构建(指定链接库位置)

                2、清空编译文件

                3、编译更新程序

                4、编译主程序

                5、查看可执行文件

                6、拷贝至目标机测试(其他文件是项目依赖文件)

                    (1)执行环境

                   (2)upgrade

                    (3)dwncs主程序


                文章转载自hCodeisDawn,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论