摘要: 导语 大家在进行商品编码选择时,应先按照关键字进行查找;无法直接查找的,根据政策进行行业、大类的划分;在进行小类细划分时,无法清楚界定、归类的:货物类可以按照商品的材料或用途选择最近似的编码;劳务或服务类按照交易实质选择最近似编码。 一 税收分类编码简介 1、税收分类编码是什么? 商品和服务税收分类 阅读全文
posted @ 2024-11-22 10:08 sinodragon21 阅读(1276) 评论(0) 推荐(0) 编辑

原文出处:https://www.cnblogs.com/eaglexmw/p/18432747

PC机上使用qemu-user-static + Docker实现arm/aarch64本地编译

 

参考的链接:
https://www.cnblogs.com/chen2ha/p/17180287.html
文章很长,一些关键点在:

1. 取得docker#

Docker可以通过Linux发布版中取得,也可以从docker网站上下载编译好的程序。

下载链接:#

https://download.docker.com/linux/static/stable/x86_64/
这里下载的是PC上的Docker,如果需要arm或者aarch64机器的,将链接的最后一级目录修改一下即可。下载下来的文件解压到一个目录,其实就可以执行了。为了让docker能自己找到containerd等程序,修改环境变量PATH,将解压路径加入到PATH中

配置一下docker的配置文件:#

  • 配置/etc/docker/daemon.json,文件格式是json格式,最关键是需要增加如下一行:
Copy Highlighter-hljs
  "experimental": true
  • 配置/usr/lib/systemd/system/docker.service服务(如果是手工下载的,示例文件将docker解压在/data/docker目录下)
Copy Highlighter-hljs
  [Unit]
  Description=Docker Application Container Engine
  Documentation=https://docs.docker.com
  After=network-online.target firewalld.service
  Wants=network-online.target
   
  [Service]
  Type=notify
  EnvironmentFile=-/data/docker/etc/sysconfig/docker
  EnvironmentFile=-/data/docker/etc/sysconfig/docker-storage
  EnvironmentFile=-/data/docker/etc/sysconfig/docker-network
  Environment=GOTRACEBACK=crash
  Environment=PATH=/usr/sbin:/usr/bin:/sbin:/bin:/data/docker
   
  #ExecStart=/data/docker/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock
  ExecStart=/data/docker/dockerd $OPTIONS \
  $DOCKER_STORAGE_OPTIONS \
  $DOCKER_NETWORK_OPTIONS \
  $INSECURE_REGISTRY
  ExecReload=/bin/kill -s HUP $MAINPID
  LimitNOFILE=1048576
  LimitNPROC=1048576
  LimitCORE=infinity
  # set delegate yes so that systemd does not reset the cgroups of docker containers
  Delegate=yes
  # kill only the docker process, not all processes in the cgroup
  KillMode=process
   
  [Install]
  WantedBy=multi-user.target
  • 启动docker后台服务sudo systemctl start docker.service(如果是下载至本地的,则在编辑完docker.service后,先执行一下命令sudo systemctl daemon-reload,每修改编译一次服务文件,均需要执行一下这条命令)

2. 下载qemu-user-static#

这个程序可以在PC机上解析arm或aarch64的ELF文件并执行之(用户侧的“虚拟机”)

下载链接:#

https://github.com/multiarch/qemu-user-static/releases
下载诸如: qemu-aarch64-static.tar.gz/qemu-arm-static.tar.gz的文件,下载下来后,解压。建议解压到docker包的目录下

3. 通过docker下载并注册一个可支持的架构解释器#

这一步让后续的arm或aarch64的docker容器,可以根据arm或aarch64的ELF文件格式调用注册的解析器来解析ELF并执行。

相应的命令如下:#

Copy Highlighter-hljs
docker run --rm --privileged multiarch/qemu-user-static:register --reset

执行成功后,会返回类似如下的结果来表明支持的架构解析器

Copy Highlighter-hljs
  Setting /usr/bin/qemu-alpha-static as binfmt interpreter for alpha
  Setting /usr/bin/qemu-arm-static as binfmt interpreter for arm
  Setting /usr/bin/qemu-armeb-static as binfmt interpreter for armeb
  Setting /usr/bin/qemu-sparc-static as binfmt interpreter for sparc
  Setting /usr/bin/qemu-sparc32plus-static as binfmt interpreter for sparc32plus
  Setting /usr/bin/qemu-sparc64-static as binfmt interpreter for sparc64
  Setting /usr/bin/qemu-ppc-static as binfmt interpreter for ppc
  Setting /usr/bin/qemu-ppc64-static as binfmt interpreter for ppc64
  Setting /usr/bin/qemu-ppc64le-static as binfmt interpreter for ppc64le
  Setting /usr/bin/qemu-m68k-static as binfmt interpreter for m68k
  Setting /usr/bin/qemu-mips-static as binfmt interpreter for mips
  Setting /usr/bin/qemu-mipsel-static as binfmt interpreter for mipsel
  Setting /usr/bin/qemu-mipsn32-static as binfmt interpreter for mipsn32
  Setting /usr/bin/qemu-mipsn32el-static as binfmt interpreter for mipsn32el
  Setting /usr/bin/qemu-mips64-static as binfmt interpreter for mips64
  Setting /usr/bin/qemu-mips64el-static as binfmt interpreter for mips64el
  Setting /usr/bin/qemu-sh4-static as binfmt interpreter for sh4
  Setting /usr/bin/qemu-sh4eb-static as binfmt interpreter for sh4eb
  Setting /usr/bin/qemu-s390x-static as binfmt interpreter for s390x
  Setting /usr/bin/qemu-aarch64-static as binfmt interpreter for aarch64
  Setting /usr/bin/qemu-aarch64_be-static as binfmt interpreter for aarch64_be
  Setting /usr/bin/qemu-hppa-static as binfmt interpreter for hppa
  Setting /usr/bin/qemu-riscv32-static as binfmt interpreter for riscv32
  Setting /usr/bin/qemu-riscv64-static as binfmt interpreter for riscv64
  Setting /usr/bin/qemu-xtensa-static as binfmt interpreter for xtensa
  Setting /usr/bin/qemu-xtensaeb-static as binfmt interpreter for xtensaeb
  Setting /usr/bin/qemu-microblaze-static as binfmt interpreter for microblaze
  Setting /usr/bin/qemu-microblazeel-static as binfmt interpreter for microblazeel
  Setting /usr/bin/qemu-or1k-static as binfmt interpreter for or1k
  Setting /usr/bin/qemu-hexagon-static as binfmt interpreter for hexagon

4. 下载特定架构的docker容器#

下载ubuntu 20.04/22.04的arm或aarch64容器的命令如下:#

Copy Highlighter-hljs
  docker pull --platform arm ubuntu:20.04
  docker pull --platform arm64 ubuntu:20.04
  docker pull --platform arm ubuntu:22.04
  docker pull --platform arm64 ubuntu:22.04

5. 启动相应的docker容器#

相应的命令如下:#

Copy Highlighter-hljs
  docker run -t --rm --platform arm64 \
  -v $(pwd)/qemu-aarch64-static:/usr/bin/qemu-aarch64-static \
  ubuntu:20.04 uname -m
   
  docker run -t --rm --platform arm \
  -v $(pwd)/qemu-arm-static:/usr/bin/qemu-arm-static \
  ubuntu:20.04 uname -m

命令有两个关键点:#

  • 指定CPU架构为arm或aarch64
  • 将外部的qemu-arm-static挂载为容器中的/usr/bin/qemu-arm-static,或
  • 将外部的qemu-aarch64-static挂载为容器中的/usr/bin/qemu-aarch64-static。

外部qemu-arm-static或qemu-aarch64-static所在路径是当前路径(所以,使用$(pwd))
带是--rm参数是因为我们仅仅验证一下相应的容器能否启动正常。

正常情况下,aarch64的容器会输出:#

Copy Highlighter-hljs
aarch64

arm的容器会输出:#

Copy Highlighter-hljs
armv7l

6. 验证通过#

我们就可以基于以上工作在容器中下载相应arm/aarch64编译器,做“本地”编译。

posted @ 2025-02-21 09:42 sinodragon21 阅读(10) 评论(0) 推荐(0) 编辑
摘要: Vim 键位指南 Vim 是一个强大的文本编辑器,以其高效的键盘操作和丰富的功能而闻名。以下是一些常用的 Vim 键位和操作,帮助你更好地使用 Vim。 基本操作 打开和关闭文件 打开文件:vim filename 保存并退出::wq 或 ZZ 不保存退出::q! 模式切换 Vim 有三种基本模式: 阅读全文
posted @ 2025-02-19 16:58 sinodragon21 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 转载自:https://blog.biofan.org/2020/04/apt-download/ 这两天要为离线的 arm 服务器安装几个 deb 包,因为这些包都有许多上游的依赖包,得 一起把它们下载到本地。 这里以 ubuntu 18.04 (bionic) 为例,下载 arm64 架构的几个 阅读全文
posted @ 2025-02-19 16:34 sinodragon21 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 首先在你的windows操作系统电脑上,你需要安装创建一个安装了debian Linux操作系统的虚拟机。 在x86架构debian linux的虚拟机环境下,下载arm版本的libwebsockets-dev: dpkg --add-architecture armhf ##指明软件安装目标机器的 阅读全文
posted @ 2025-02-19 16:08 sinodragon21 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 在Hive SQL中,split函数用于将字符串根据指定的分隔符拆分成数组。这个函数的基本语法是split(string str, string pat),其中str是要拆分的字符串,而pat是作为分隔符的字符串。返回值是一个数组,包含了拆分后的所有子字符串。 示例 SELECT split('on 阅读全文
posted @ 2025-02-14 09:31 sinodragon21 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 转载自:https://ixyzero.com/blog/archives/5741.html,感谢原作者的总结分享。 =Start= 缘由: 简单整理一下近期在进行 Hive SQL 查询时碰到的一些问题和经验,方便后面有需要的时候参考。 正文: 参考解答: 1. Hive SQL 如何对英文分号 阅读全文
posted @ 2025-02-14 09:10 sinodragon21 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 一、hive中对于转义的理解(注意hive中用\\双斜杠表示转义,比如*星号的转义需使用\\*) 转义指的是:比如说 “.”代表的是任意一个字符,但是假如你就要匹配“.”这样一个字符,那样需要转义, 还有,d代表一个字母,但是为了方便,写了一个简单的表达式来表示所有的数字,用转义的小写d来表示。 但 阅读全文
posted @ 2025-02-13 17:01 sinodragon21 阅读(22) 评论(0) 推荐(0) 编辑
摘要: ‌三中一华‌是指中信证券、中信建投证券、中金公司和华泰联合证券四家公司。这四家公司在国内券商中占据重要地位,市场占有率和影响力都非常大,是求职者和投资者瞩目的顶级券商。‌1 三中一华的基本信息 ‌中信证券‌:中国最大的全牌照券商,提供全面的金融服务,包括证券经纪、投资银行、资产管理、财富管理等。总部 阅读全文
posted @ 2025-01-05 21:28 sinodragon21 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1. 安徽省代码:AH2. 北京市代码:BJ3. 福建省代码:FJ4. 甘肃省代码:GS5. 广东省代码:GD6. 广西壮族自治区代码:GX7. 贵州省代码:GZ8. 海南省代码:HI9. 河北省代码:HE10. 河南省代码:HA11. 黑龙江省代码:HL12. 湖北省代码:HB13. 湖南省代码: 阅读全文
posted @ 2024-12-03 08:42 sinodragon21 阅读(2385) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示