栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

写一个可执行文件依赖.so的测试用例

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

写一个可执行文件依赖.so的测试用例

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/962083.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号