在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于xmake的RT_Smart GNU移植minizip記錄

冬至子 ? 來源:TimWcx ? 作者:TimWcx ? 2023-06-07 15:42 ? 次閱讀

由于minizip除了依賴于文件一些操作函數外并不依賴于其他庫,所以個人直接編譯運行;另外本次移植的是使用的xmake完成移植。

移植記錄

1、選擇合適的移植庫,xmake提供了一些可以跨平臺移植的庫,這里我選擇了minizip來進行移植。

2、編寫xmake.lua配置ToolChains并且引入minizip依賴

add_rules("mode.debug", "mode.release")

toolchain("aarch64-linux-musleabi")

set_kind("standalone")

set_sdkdir("$(projectdir)/../../tools/gnu_gcc/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu")

on_load(function(toolchain)

os.setenv("PROJ_DIR", os.projectdir()) --For lua embed build script

toolchain:load_cross_toolchain()

toolchain:set("toolset", "cxx", "aarch64-linux-musleabi-g++")

toolchain:set("toolset", "cc", "aarch64-linux-musleabi-gcc")

-- add flags for aarch64

toolchain:add("cxflags", "-march=armv8-a -D__RTTHREAD__ -Wall -n --static -DHAVE_CCONFIG_H", {force = true})

toolchain:add("ldflags", "-march=armv8-a -D__RTTHREAD__ -Wall -n --static", {force = true})

toolchain:add("ldflags", "-T $(projectdir)/../../linker_scripts/aarch64/link.lds", {force = true})

if not is_config("pkg_searchdirs", "dropbear") then

toolchain:add("ldflags", "-L$(projectdir)/../../sdk/rt-thread/lib/aarch64/cortex-a -Wl,--whole-archive -lrtthread -Wl,--no-whole-archive", {force = true})

end

toolchain:add("includedirs", "$(projectdir)/../../sdk/rt-thread/include", {force = true})

toolchain:add("includedirs", "$(projectdir)/../../", {force = true})

toolchain:add("includedirs", "$(projectdir)", {force = true})

toolchain:add("includedirs", "$(projectdir)/../../sdk/rt-thread/components/dfs", {force = true})

toolchain:add("includedirs", "$(projectdir)/../../sdk/rt-thread/components/drivers", {force = true})

toolchain:add("includedirs", "$(projectdir)/../../sdk/rt-thread/components/finsh", {force = true})

toolchain:add("includedirs", "$(projectdir)/../../sdk/rt-thread/components/net", {force = true})

toolchain:add("linkdirs", "$(projectdir)/../../sdk/rt-thread/lib/aarch64", {force = true})

if is_config("kind", "debug") then

toolchain:add("cxflags", "-g -gdwarf-2", {force = true})

else

toolchain:add("cxflags", "-O2", {force = true})

end

end)

toolchain_end()

add_requires("minizip")

target("minizip")

set_toolchains("aarch64-linux-musleabi")

set_kind("binary")

add_files("src/minizip.c")

add_packages("minizip")

target("miniunz")

set_toolchains("aarch64-linux-musleabi")

set_kind("binary")

add_files("src/miniunz.c")

add_packages("minizip")

target("minizip_test")

set_toolchains("aarch64-linux-musleabi")

set_kind("binary")

add_files("src/main.c")

add_packages("minizip")

配置cconfig.h,這個文件如果用scons會自動生成,但是在xmake工程當中不會自動生成,所以需要自己實現

#ifndef CCONFIG_H__

#define CCONFIG_H__

/* Automatically generated file; DO NOT EDIT. */

/* compiler configure file for RT-Thread in GCC/MUSL */

#define HAVE_SYS_SIGNAL_H 1

#define HAVE_SYS_SELECT_H 1

#define HAVE_PTHREAD_H 1

#define HAVE_FDSET 1

#define HAVE_SIGACTION 1

#define HAVE_SIGEVENT 1

#define HAVE_SIGINFO 1

#define HAVE_SIGVAL 1

#endif

3、編寫src/main.c程序,這里我用minizip實現了壓縮example.txt到example.zip

/*

Copyright (c) 2006-2018, RT-Thread Development Team

SPDX-License-Identifier: GPL-2.0

  • Change Logs:

    Date Author Notes

    2023-05-17 wcx1024979076 The first version

    */

    #include "stdio.h"

    #include "zip.h"

    int main()

    {

    // 文件名

    const char *zipfile = "example.zip";

    // 需要壓縮的文件

    const char *file = "example.txt";

    zipFile zf = zipOpen(zipfile, APPEND_STATUS_CREATE);

    if(zf == NULL)

    {

    printf("Error creating %s \\n", zipfile);

    return 1;

    }

    // 壓縮文件

    int err = zipOpenNewFileInZip(zf, file, NULL, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_BEST_COMPRESSION);

    if(err != ZIP_OK)

    {

    printf("Error adding %s to %s \\n", file, zipfile);

    return 1;

    }

    // 讀取文件并壓縮

    FILE *f = fopen(file, "rb");

    char buf[1024];

    int len;

    while((len = fread(buf, 1, sizeof(buf), f)) > 0)

    {

    zipWriteInFileInZip(zf, buf, len);

    }

    fclose(f);

    zipCloseFileInZip(zf);

    zipClose(zf, NULL);

    printf("Successfully created %s \\n", zipfile);

    return 0;

    }

    4、xmake編譯鏈接生成mininet可執行文件,打包進入 sd.bin

這里我使用的mcopy來實現的(用的是Codespace來寫的代碼,無root權限,不能使用mount掛載),具體命令為

mcopy -i sd.bin /path/of/the/minizip ::

5、用qemu虛擬機運行即可

運行結果:

1.jpg

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 虛擬機
    +關注

    關注

    1

    文章

    940

    瀏覽量

    28428
  • GNU
    GNU
    +關注

    關注

    0

    文章

    143

    瀏覽量

    17542
  • SRC算法
    +關注

    關注

    0

    文章

    5

    瀏覽量

    7448
  • RTThread
    +關注

    關注

    8

    文章

    132

    瀏覽量

    41002
收藏 人收藏

    評論

    相關推薦

    ART Pi Smart基于RT-Thread Smart系統的LVGL移植

    ART-Pi Smart開發板為RT-Thread聯合百問科技出品,使用的是 NXP 公司的 i.MX6ULL 處理器,具備單核 ARM Cortex-A7,最高運行頻率可以達到 800MHz。
    的頭像 發表于 11-29 14:29 ?1134次閱讀
    ART Pi <b class='flag-5'>Smart</b>基于<b class='flag-5'>RT</b>-Thread <b class='flag-5'>Smart</b>系統的LVGL<b class='flag-5'>移植</b>

    [IMX6ULL]RT-Smart系統下的軟件移植筆記推薦

    1、RT-Smart系統下的LwIP移植關于 i.MX 6ULL 的啟動方式,已經老生常談了。關于啟動過程的分析,網上能搜到一堆原理講解,不過不推薦把那個解釋當作最佳答案,建議還是自行從手冊入手關于
    發表于 03-25 16:25

    如何使用xmake工具來編譯rt-thread工程

    在最新的 rt-thread 主倉庫,支持使用 xmake 工具來編譯 rt-thread 工程。xmake介紹xmake 是一個基于 Lu
    發表于 06-08 15:05

    開機體驗rt-smart:webserver網關

    webserver 網關簡介在 ART-Pi Smart SDK 里面提供了一個 gnu-app 示例:webserver 網關,并作為 ART-Pi Smart 的出廠 Demo。即移植
    發表于 06-30 11:17

    ART Pi Smart基于RT-Thread Smart系統的LVGL移植簡介

    1、基于RT-Thread Smart系統的LVGL移植我申請測試申請的高級功能的,由于是有限的(本來要求測試一個月,但是板子只有不到一個月)。的,特別是RT-Thread智能系統還學
    發表于 08-03 16:35

    smart-build工具的menuconfig整體設計

    要編譯的 gnu-app配置工具鏈和平臺架構(arm、aarch64)保存并退出自動從倉庫拉取版本的gnu-app制造APP并將生成物存放在rt-smart/userapps/root/bin根據現有
    發表于 08-26 15:32

    RT-Thread Smart已正式上線

    構建或其他的構建工具,例如xmake,cmake等,并對接 RT-Thread 在線軟件包;同時支持 POSIX,方便 Linux 應用的移植
    的頭像 發表于 11-29 10:31 ?2867次閱讀

    樹莓派上rt-smart的應用編程入門

    文章,一些介紹及樹莓派上rt-smart的應用編程入門(更多的從應用程序角度入手)。后續還包括在rt-smart上的不同應用程序介紹: wget curl移植 busybox移植 sd
    的頭像 發表于 05-13 14:10 ?3232次閱讀
    樹莓派上<b class='flag-5'>rt-smart</b>的應用編程入門

    rt-smart移植分析:從樹莓派3b入手

    移植rt-smart到最新的板子上具體需要注意哪些細節,哪些才是移植rt-smart的關鍵點?本文從樹莓派3b上移植
    發表于 01-25 18:48 ?0次下載
    <b class='flag-5'>rt-smart</b><b class='flag-5'>移植</b>分析:從樹莓派3b入手

    RT-Thread Smart 上手指南

    RT-Thread Smart(簡稱rt-smart)是基于RT-Thread操作系統衍生的新分支,面向帶MMU,中高端應用的芯片,例如ARM Cortex-A系列芯片,MIPS...
    發表于 01-25 20:09 ?13次下載
    <b class='flag-5'>RT</b>-Thread <b class='flag-5'>Smart</b> 上手指南

    xmake輕量級跨平臺構建工具介紹及安裝與使用方法

    在最新的 rt-thread 主倉庫,支持使用 xmake 工具來編譯 rt-thread 工程。
    的頭像 發表于 05-11 10:31 ?2180次閱讀

    如何使用xmake工具來編譯rt-thread工程

     在最新的 rt-thread 主倉庫,支持使用 xmake 工具來編譯 rt-thread 工程。   
    的頭像 發表于 05-11 15:03 ?2238次閱讀
    如何使用<b class='flag-5'>xmake</b>工具來編譯<b class='flag-5'>rt</b>-thread工程

    基于xmakeRT-Thread Smart用戶態開發教程

    RT-Thread Smart(以下簡稱 Smart) 是基于 RT-Thread 操作系統上的混合操作系統,簡稱為 rt-smart,它把
    的頭像 發表于 06-07 11:44 ?1355次閱讀
    基于<b class='flag-5'>xmake</b>的<b class='flag-5'>RT</b>-Thread <b class='flag-5'>Smart</b>用戶態開發教程

    RT_Smart GNU移植minizip記錄

    由于minizip除了依賴于文件一些操作函數外并不依賴于其他庫,所以個人直接編譯運行;另外本次移植的是使用的xmake完成移植
    的頭像 發表于 09-14 11:42 ?992次閱讀
    <b class='flag-5'>RT_Smart</b> <b class='flag-5'>GNU</b><b class='flag-5'>移植</b><b class='flag-5'>minizip</b><b class='flag-5'>記錄</b>

    基于xmakeRT-Thread Smart用戶態開發教程

    RT-Thread Smart(以下簡稱 Smart) 是基于 RT-Thread 操作系統上的混合操作系統,簡稱為 rt-smart,它把
    的頭像 發表于 09-14 11:48 ?1190次閱讀
    基于<b class='flag-5'>xmake</b>的<b class='flag-5'>RT</b>-Thread <b class='flag-5'>Smart</b>用戶態開發教程
    主站蜘蛛池模板: 欧美黑人黄色片 | 免费精品99久久国产综合精品 | 俺去俺来也www色官网免费的 | 人人看人人添人人爽 | 天天碰天天操 | 在线观看免费午夜大片 | 男女爱爱福利 | 国产精品亚洲一区二区三区在线播放 | 色咪网 | 久久国产乱子伦精品免费午夜 | 国产日日操| 成人黄色三级 | 久久青草91线频免费观看 | 怡红院日本一道日本久久 | 中年艳妇乱小玩 | 性夜黄a爽影免费看 | 色综合天天综合网国产人 | 91久久另类重口变态 | 久草视频一区 | 成人国产精品高清在线观看 | 四虎影院在线播放 | 午夜久久免影院欧洲 | 国产午夜精品理论片免费观看 | 黑人性xxxⅹxxbbbbb | 年下系列高h文 | xxx69日本hd| 狠狠色婷婷七月色综合 | 久久久久久全国免费观看 | 992tv国产精品福利在线 | 激情久久久久久久久久久 | 老师我好爽再深一点好大 | 欧美一级视频在线 | 中文字幕第8页 | 在线视频观看一区 | 狠狠干伊人网 | 91大神在线精品视频一区 | 四只虎免费永久观看 | 夜夜狠狠| 扒开双腿猛进湿润18p | 又粗又长又色又爽视频 | 日本wwwwww|