export PATH="/home/he/edge/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:$PATH"
如果makefile编译报错,那就是每个命令前应该是tab一下而不是空格。
1、printlib文件夹下三个文件
Makefile:
CROSS_COMPILE = aarch64-none-linux-gnu-
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
NM = $(CROSS_COMPILE)nm
SOURCE_ROOT = $(shell pwd)
CFLAGS := -Wall -O2 -fno-builtin
CPPFLAGS := -lm
INCLUDE_DIR := -I $(SOURCE_ROOT)/
-I$(SOURCE_ROOT)/include
APP_NAME=libprinttest.so
all: $(APP_NAME)
APP_OBJECTC += printlib.c
STATIC_OBJ_O = $(patsubst %.c, %.o, $(APP_OBJECTC))
STATIC_OBJ_C = $(foreach file, $(STATIC_OBJ_O), $(file) )
$(STATIC_OBJ_C) : %.o:%.c
$(CC) $(INCLUDE_DIR) $(CPPFLAGS) -c -fPIC $(APP_OBJECTC)
$(APP_NAME): $(STATIC_OBJ_C)
$(CC) -shared $(CPPFLAGS) -o $(APP_NAME) .
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "printlib.h"
void printtest(void)
{
while (1) {
sleep(5);
printf("hello ");
myPrint();
}
}
int main(int argc, char **argv)
{
int ret = 0;
printtest();
return ret;
}
直接编译就行。
打包镜像:
Dockerfile:
FROM busybox ADD libprinttest.so /usr/lib ADD printtest / RUN chmod +x /printtest ENTRYPOINT ["/printtest"]
docker buildx build --platform linux/arm64 -t printtest:v1.0 . docker save 8a350c65e6e2 -o my_img.tar



