将项目做成链接动态库的形式打包移植到rk3399系列开发板

1、工程结构

这里以一个网盘文件传输项目为例

2、 编译生成动态库

这里写了一个Makefile专用于生成动态库

CC = aarch64-linux-gnu-gcc    #64位arm平台交叉编译器
CFLAGS = -fPIC -Wall            #生成与位置无关代码
SRC = $(wildcard *.c)            #查找所有.c文件
OBJ = $(patsubst %.c, %.o, $(SRC))    #将所有.c文件替换为.o
APP = go_go                        #可执行文件名
LIBNAME=libmylibrary.so            #动态库全称
LIBNAME_LINK = mylibrary            #动态库名

all: $(LIBNAME)                   #生成动态库。往下寻找依赖 


$(LIBNAME): $(OBJ)                
    $(CC) -shared -fPIC -o $@ $^    #$@指向规则,$^指向所有依赖

%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@    #$<每次指向第一个依赖


clean:
    rm -f $(OBJ) $(LIBNAME) $(APP)       #清除所产生的全部文件

#install: $(LIBNAME)                 #若在本地测试,即将生成的库放入/lib下便于动态加载器查找
     #sudo cp $(LIBNAME) /lib
install:
    sudo scp $(LIBNAME) $(APP) root@192.168.105.250:/drive_code    #通过网络发送至开发板
#install-headers:
    #cp *.h /usr/local/include        #放入此路径也是为了能找到头文件

#install:
    #sudo cp srv_main /usr/local/bin    #将可执行文件放入已设置的环境变量地址下,可全局运行
run:
    $(CC) main.c -o $(APP) -L. -l$(LIBNAME_LINK) -lpthread #编译工程中主函数并链接自己的库

.PHONY: clean        #防止clean重名文件导致make clean不生效

3、实际操作演示

root@SOM-RK3399v2:/drive_code# sudo mv libmylibrary.so /lib

 此处为开发板linux终端下,将复制过来的动态库文件放入开发板的/lib目录下,若直接运行结果如下。

root@SOM-RK3399v2:/drive_code# ./go_go
./go_go: error while loading shared libraries: libmylibrary.so: cannot open shared object file: No such file or directory

 至此,顺利打包到rk3399开发板并成功运行。

root@SOM-RK3399v2:/drive_code# ./go_go
                **********欢迎使用**********
^C
root@SOM-RK3399v2:/drive_code#

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值