希望全志的大神出一个D1s tina APP怎么引用其他库文件的教程
-
目前正在研究D1S,开发文档很多,但是感觉不是那么友好几乎都是底层开发,目前想在D1S开发一些上层的应用程序,遇到这个芯片需要交叉编译,跟之前直接用GCC就编译有点差异,这个OpenWRT没有GCC,只能在HOST的电脑上编译好程序再下载到D1S上运行,目前需要用到音频相关的程序,比如需要asound库,源码库里面是带的,但是不知道如何让自己的程序去引用?这方面不知道有没有大神知道的?相信做这个D1开发的一定会遇到。
-
推荐的方法是放到package里在编译文件系统的时候就引用了。
-
我这里有一个程序用到了SDL,直接CMake里find_package(SDL)就好了
-
@yuzukitsuru 好的,十分感谢,晚上试试看
-
@yuzukitsuru 好的,十分感谢,晚上试试看
-
@yuzukitsuru 前辈们,请问下我在Tina的目录下的dl看到有curl这个库,然后我的程序想用这个库,Makefile得这么添加这个库呢?不知道他的动态库和对应的头文件解压到那里去了
D1-H_SDK\PET_D1-H_P01_Linux\dl\curl-7.54.0.tar.bz2 -
@gsd_zcm 一般会被其他包依赖的头文件和库都会拷贝到 out/<方案>/staging_dir/target/usr/include和 out/<方案>/staging_dir/target/usr/lib 目录下。在Makefile中,通过 -I$(STAGING_DIR)/usr/include/ 和 -L$(STAGING_DIR)/usr/lib 引脚即可。
如果不行,则需要确认这个目录下的实际头文件路径是不是变化了。如果无论怎样都没有,则需要确认你依赖的头文件/库等,package中的Makefile是否有定义Build/InstallDev,Build/InstallDev是将库和头文件拷贝到 STAGING_DIR 。 -
@chengwei_peng 谢谢前辈,讲解的好详细,按照前辈的方法,代码可以正常编译了,下面是我的makefile,可能有些地方不够好,伙伴们可以参考下。
CROSS = /home/linux/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/staging_dir/toolchain/bin/riscv64-unknown-linux-gnu- CC = $(CROSS)gcc #定义CC为gcc编译 RM = rm -rf #获取当前目录下的所有.c文件 SRCS=$(wildcard ./*.c) #将SRC中所有出现.c的替换成.o OBJS=$(patsubst %.c, %.o, $(SRCS)) STAGING_DIR = /home/linux/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/staging_dir/target/usr HEADER_PATH = -I $(STAGING_DIR)/include #定义HEADER_PATH为当前工程中的头文件路径 LIB_PATH = -L $(STAGING_DIR)/lib #定义LIB_PATH为当前工程中的头文件路径 $(warning LIB_PATH) #输出当前LIB_PATH中的内容 LIBS = -lcurl -lssl -lcrypto -lnghttp2 #制定LIBS链接库的名称 TARGET=face_api #这些变量不能单独使用 必须在命令中使用 #$@ 表示目标 #$^ 表示所有的依赖 #$< 表示第一个依赖 $(TARGET):$(OBJS) $(CC) $^ -o $@ $(LIB_PATH) $(LIBS) # 告诉编译器生成可执行文件时库存放的目录,以及库的名字 #模式匹配 所有的.o都依赖对应的.c #将所有的.c 生成对应的.o %.o:%.c $(CC) -c $< -o $@ $(HEADER_PATH) #告诉编译器申城中间文件时头文件的所在目录 #声明clean为伪目标 伪目标不去判断目标文件是否存在或者已经更新 #无条件执行命令 .PHONY:clean clean: $(RM) $(OBJS) $(TARGET)
-
@gsd_zcm 在 希望全志的大神出一个D1s tina APP怎么引用其他库文件的教程 中说:
@chengwei_peng 谢谢前辈,讲解的好详细,按照前辈的方法,代码可以正常编译了,下面是我的makefile,可能有些地方不够好,伙伴们可以参考下。
注释好详细,感谢分享!
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号