docker编译
·
test.sh是一个SDK,一键安装脚本。
代码结构:
tree
.
├── Dockerfile
├── Makefile
├── test.sh
├── myapp
├── myapp_release.tar
└── src
├── main.c
cat Makfile
# 使用 ?= 表示:如果环境变量里已经有 CC/CXX 等,就直接复用它!
CC ?= $(CROSS_COMPILE)gcc
CXX ?= $(CROSS_COMPILE)g++
AR ?= $(CROSS_COMPILE)ar
LD ?= $(CROSS_COMPILE)ld
# 核心修复:使用 += 允许追加编译选项,这样能完美保留 SDK 的底层架构优化参数
CFLAGS += -O2 -Wall -g
LDFLAGS +=
# 目标文件
TARGET = myapp
SRCS = $(wildcard src/*.c)
OBJS = $(SRCS:.c=.o)
# 默认目标
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
@echo "=========================================="
@echo " Build complete: $(TARGET)"
@echo " Use 'file $(TARGET)' to check architecture"
@echo "=========================================="
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJS) $(TARGET)
.PHONY: all clean
cat main.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
printf("========================================\n");
printf(" i.MX 8MP Cross-compile Test\n");
printf("========================================\n");
printf("Hello from ARM64 platform!\n");
#ifdef __aarch64__
printf("Architecture: ARM64 (aarch64)\n");
#elif defined(__arm__)
printf("Architecture: ARM32\n");
#else
printf("Architecture: Unknown\n");
#endif
printf("PID: %d\n", getpid());
printf("========================================\n");
return 0;
}
cat Dockerfile
# ========== 流水线全自动 Dockerfile ==========
FROM ubuntu:22.04
# 设置非交互式安装
ENV DEBIAN_FRONTEND=noninteractive
# 安装嵌入式编译所需的基础工具
RUN apt-get update && apt-get install -y \
build-essential \
python3 \
xz-utils \
file \
cpio \
&& rm -rf /var/lib/apt/lists/*
# 设置工作目录
WORKDIR /workspace
# 声明 SDK 根目录的环境变量
ENV SDK_ROOT=/opt/fsl-imx-wayland/6.6-scarthgap
# 【CMD】:容器启动时,全自动加载环境并执行编译,编译完容器立刻自动关闭
CMD ["/bin/bash", "-c", "source $SDK_ROOT/environment-setup-armv8a-poky-linux && make clean && make && tar -cvf myapp_release.tar myapp"]
#构建docker镜像
sudo docker build -t imx8mp-app:latest .
#运行镜像
sudo docker run --rm -v /opt/fsl-imx-wayland/6.6-scarthgap:/opt/fsl-imx-wayland/6.6-scarthgap -v "$(pwd)":/workspace myapp:latest
更多推荐

所有评论(0)