WIN11下WSL来做LINUX的开发
WIN11内置一个WSL的LINUX接口(可以理解为虚拟机)上面安装ubuntu操作系统,安装GCC的交叉编译器和库 在芯片厂BSP的基础上制作了嵌入式ARM9的LINUX操作系统的内核和文件系统,在VSCODE下下编写代码,make一些APP应用毫无压力。基本上全部在WIN11的一个OS平台下完成,不用系统切换 当然要借助CPU的虚拟化。
从WIN11 WSL vscode等生态基本上看出微软也在拥抱开源 ,走向POSIX和GPL,互联网的改变无处不在。
跟老韩学Ubuntu Server 2204-gcc指令帮助手册02
老韩Linux菌信息科技公司研发工程师跟老韩学Ubuntu Server 2204-gcc指令帮助手册02
golang cgo 静态编译
通常来说,我们go编译出来的可执行文件,是一个动态链接的可执行文件,依赖gcc,libc等一些动态lib。这样如果你跨平台去用,比如ubuntu 22.04编译的可执行文件,到debian 10上就不能运行了,因为动态lib都不一样。版本不匹配,不兼容。
我们可以通过静态编译的方法,来把golang的应用,编译成完全静态的可执行文件。
当然了,文件体积会大一些,但是更通用一些。丢到任何一台linux,只要认,就能运行。
我们先装一下musl 类库的工具
apt-get update apt-get install -y musl musl-dev musl-tools
然后开始编译
CGO_ENABLED=1 CC=musl-gcc go build --ldflags '-linkmode external -extldflags "-static"'
这样编译出来的静态文件,就可以放到任何linux运行。
如何看一个应用是动态编译链接的,还是静态链接的,可以用ldd命令检测
例如:下面就是一个动态链接的应用程序
# ldd /usr/bin/vim
linux-vdso.so.1 (0x00007fff719c8000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6701f18000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f6701ee6000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f6701eba000)
libsodium.so.23 => /lib/x86_64-linux-gnu/libsodium.so.23 (0x00007f6701e62000)
libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007f6701e58000)
libgpm.so.2 => /lib/x86_64-linux-gnu/libgpm.so.2 (0x00007f6701e50000)
libpython3.10.so.1.0 => /lib/x86_64-linux-gnu/libpython3.10.so.1.0 (0x00007f6701876000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f670164e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f67023af000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f67015b7000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f6701586000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f670156a000)
Ubuntu 今日正式发布了 21.04 版本,该版本采用了 Linux 5.11 稳定版内核,同时内置了微软 Active Directory 集成、用于 Flutter 应用开发的 SDK,以及默认启用 Wayland 替换了已有 36 年历史的 X Window System。
21.04 版本并非长期稳定版,将于 2022 年 1 月结束支持。该版本进行了一系列常规更新,GCC 更新到了 10.3.0,Python 更新到了 3.9.4,同时也提供了 OpenJDK 16(但不可用于包构建)。
此外,21.04 还重新设计了 Yaru 黑暗主题,使其适配性更好。GNOME 桌面并没有更新到 GNOME 40,官方表示还需要更多时间打磨。
下载地址:网页链接