Android Studio编译错误, Gradle 内存不足
错误新如下:
Configure Gradle memory settings using '-Xmx' JVM option (e.g. '-Xmx2048m'.)
全局设置下Android Studio的内存。
Settings ==> Appearance & Behavior ==> System Settings ==> Memory Settings.
三个内存设置都调大为2048M
错误新如下:
Configure Gradle memory settings using '-Xmx' JVM option (e.g. '-Xmx2048m'.)
全局设置下Android Studio的内存。
Settings ==> Appearance & Behavior ==> System Settings ==> Memory Settings.
三个内存设置都调大为2048M
--enable-cross-compile
才能启用clang--cross-prefix
是拼接不出来的.查看k3s anget启动日志,有如下错误。
$ systemctl status k3s-agent.service
`time="2022-04-09T05:03:40+08:00" level=error msg="CA cert validation failed: Get \"https://127.0.0.1:6444/cacerts\": x509: certificate has expired or is not yet valid: current time 2022-04-09T05:`
表面上看是请求到的server证书,时间早于证书的notBefore time,分析原因可能是两个系统的时区和时间不一致导致。
统一到utc时区,并自动更新时间
$ timedatectl set-timezone UTC
$ timedatectl set-ntp yes
然后需要重新安装k3s server, 之前agnet就能正常连接到server了
SONiC 配置管理口的ip地址
查询已存在的设置
$ redis-cli -n 4 keys "MGMT_INTERFACE*"
如果已有设置就删除
$ redis-cli -n 4 DEL "MGMT_INTERFACE|eth0|10.20.30.40/24"
编辑配置文件
$ vim mgmt_ip.json
{
"MGMT_INTERFACE": {
"eth0|192.168.0.116/24": {
"gwaddr": "192.168.0.1"
}
}
}
加载配置文件,并保存
$ sudo config load mgmt_ip.json
$ redis-cli -n 4 save
$ redis-cli save
$ sudo config save
重启网络
$ sudo systemctl restart interfaces-config
检查配置
$ /sbin/ifconfig eth0
参考:https://github.com/Azure/SONiC/blob/master/doc/SONiC-User-Manual.md
安装依赖包
sudo apt-get update
sudo apt-get install nfs-common
离线安装
sudo cp ./k3s /usr/local/bin/
sudo chmod +x /usr/local/bin/k3s
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp ./k3s-airgap-images-arm64.tar.gz /var/lib/rancher/k3s/agent/images/
sudo chmod +x ./k3s_install.sh
Server docker模式
sudo INSTALL_K3S_SKIP_DOWNLOAD=true ./k3s_install.sh --docker
golang官网已可以从中国访问,地址:The Go Programming Language
下载对应平台的bin包(源码编译需要golang1.4以上),并解压。
$ wget https://golang.google.cn/dl/go1.18.linux-arm64.tar.gz
$ tar zxvf go1.18.linux-arm64.tar.gz
确保每一个node,加入集群自动运行DaemonSet
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-daemon
labels:
app: node-daemon
spec:
selector:
matchLabels:
name: node-daemon
template:
metadata:
labels:
name: node-daemon
spec:
containers:
- name: parsec-client
image: parsec-client:v1.0
ports:
- containerPort: 8300
hostPort: 8300
volumeMounts:
- mountPath: /run/parsec
name: parsec-run
volumes:
- hostPath:
path: /home/parsec/run
name: parsec-run
等价于docker命令
sudo docker run --rm -d -p8300:8300 -v /home/parsec/run:/run/parsec parsec-client:v1.0
$ sudo docker save aef2a010b6b5 > parsec-client-v1.0-docker.tar
$ sudo docker load < parsec-client-v1.0-docker.tar
查看image id
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> aef2a010b6b5 47 hours ago 17.3MB
根据image id设置tag
$ sudo docker tag aef2a010b6b5 parsec-client:v1.0
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
parsec-client v1.0 aef2a010b6b5 47 hours ago 17.3MB
docker镜像构建需要至少一条FROM指令,表明从什么基础开始打架镜像,空镜像FROM scratch
, scratch不是一个可拉取的镜像,相当于一个关键字。最小的linux运行系统可以FROM busybox
开始搭建。
多阶段构建:一个Dockerfile可以多个From, 最后一个From生效,前面的可以AS别名,多用于构建最终运行的bin文件,COPY可以从前面的From阶段中拷贝文件。
visual studio的dll工程,默认不会生成配套的.lib文件,需要再头文件中定义导出的函数或类
#if defined(_WIN32)
#if defined(__RUNTIME_DLL__)
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#else
#define DLL_EXPORT
#endif
如果是cmake,在CMakeLists.txt中定义__RUNTIME_DLL__
开始dll的DLL_EXPORT宏
target_compile_definitions(libtest PRIVATE __RUNTIME_DLL__)