海思osd+freetype+SDL+SDL_ttf编译成功后,Makefile的编写
请先移步我的上一篇转载博文http://blog.csdn.net/qq_26671365/article/details/78974661,这里先感谢一下博文的原创者,使我受益匪浅。
这里假设你已经装好freetype,SDL还有SDL_ttf
arm-hisiv400-linux-gcc test.c`sdl-config --cflags --libs`-I/opt/sdl_lib/include-I/opt/sdl_lib/include/SDL-L/opt/sdl_lib/lib-lSDL-lSDL_ttf-Wl,-rpath-o test
上面的命令是编译SDL 测试文件的shell语句,经测试可用。但是最后我们的目的还是要在海思的demo或者自己编写的app中使用SDL,我把以上语句单独
放在Makefile中可以编译SDL测试demo。那么怎么把这条语句加入海思的Makefile中,以便我们方便在海思的demo中使用SDL呢?
先看一看海思的Makefile吧
# Hisilicon Hi3516 sample Makefile
include ../Makefile.param
#ifeq ($(SAMPLE_PARAM_FILE), )
# SAMPLE_PARAM_FILE:=../Makefile.param
# include $(SAMPLE_PARAM_FILE)
#endif
# target source
SRC := $(wildcard *.c)
OBJ := $(SRC:%.c=%.o)
TARGET := $(OBJ:%.o=%)
.PHONY : clean all
all: $(TARGET)
MPI_LIBS := $(REL_LIB)/libmpi.a
$(TARGET):%:%.o $(COMM_OBJ)
$(CC) $(CFLAGS) -lpthread -lm -o $@ $^ $(MPI_LIBS) $(AUDIO_LIBA) $(SENSOR_LIBS)
clean:
@rm -f $(TARGET)
@rm -f $(OBJ)
@rm -f $(COMM_OBJ)
cleanstream:
@rm -f *.h264
@rm -f *.jpg
@rm -f *.mjp
@rm -f *.mp4
核心是这一句,$(TARGET):%:%.o $(COMM_OBJ)
$(CC) $(CFLAGS) -lpthread -lm -o $@ $^ $(MPI_LIBS) $(AUDIO_LIBA) $(SENSOR_LIBS)
我有试过将SDL的编译语句加入这句话中,但是行不通。
现在来稍微分析下这一段Makefile语句。
$(TARGET):%:%.o $(COMM_OBJ)的意思是$(TARGET)的生成依赖于所有的.o文件和COMM文件夹下面的.obj文件
这个Makefile包含了其他目录的Makefile.param,总共包含了两层。查看.param文件可以看到
$(CC)的值为arm-hisiv500-linux-gcc
$(CFLAGS)包含了所有的编译选项、包含文件路径、链接动态库,静态库路径,其中也包含了-lpthread和-lm,所以把后面的-lpthread与-lm去掉也没问题,这个应该是
海思开发人员的一点点疏漏。
$(MPI_LIBS) $(AUDIO_LIBA) $(SENSOR_LIBS这三项是具体的附加依赖库库名称
我们再看一下SDL的编译语句
arm-hisiv400-linux-gcc test.c`sdl-config --cflags --libs`
-I/opt/sdl_lib/include-I/opt/sdl_lib/include/SDL-L/opt/sdl_lib/lib-lSDL-lSDL_ttf-Wl,-rpath-o test
$(CC)=arm-hisiv400-linux-gcc,这个不用管他了
把`sdl-config --cflags --libs`加在$(CFLAGS)中(在.param文件中加)
-I/opt/sdl_lib/include-I/opt/sdl_lib/include/SDL也加在$(CFLAGS)中(在.param文件中相应位置加)
-lSDL-lSDL_ttf-Wl,-rpath也加在$(CFLAGS)中
-L/opt/sdl_lib/lib要稍微注意下,修改后变成这样(也是在Makefile.param中修改)
export SDL_LIBA ?= /opt/sdl_lib/lib/libfreetype.a\
/opt/sdl_lib/lib/libSDL.a\
/opt/sdl_lib/lib/libSDL_ttf.a
export SDL_LIBS ?= /opt/sdl_lib/lib/libfreetype.so\
/opt/sdl_lib/lib/libSDL.so\
/opt/sdl_lib/lib/libSDL_ttf.so
最终这一句Makefile语句修改成
$(TARGET):%:%.o $(COMM_OBJ)
$(CC) $(CFLAGS) -o $@ $^ $(MPI_LIBS) $(AUDIO_LIBA) $(SENSOR_LIBS) $(SDL_LIBA) $(SDL_LIBS)
其他的地方不用改。
最后给大家看一下展开后的编译语句
arm-hisiv400-linux-gcc -Wall -g `sdl-config --cflags --libs` -I/home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common -I/opt/sdl_lib/include -I/opt/sdl_lib/include/SDL -I/home/ach/Hi3516A_SDK_V2.0.7.0/mpp/include -I/home/ach/Hi3516A_SDK_V2.0.7.0/mpp/component/acodec -I/home/ach/Hi3516A_SDK_V2.0.7.0/mpp/extdrv/tw2865 -I/home/ach/Hi3516A_SDK_V2.0.7.0/mpp/extdrv/tlv320aic31 -I/home/ach/Hi3516A_SDK_V2.0.7.0/mpp/extdrv/ak7756en -Dhi3516a -DHICHIP=0x3516A100 -DSENSOR_TYPE=PANASONIC_MN34220_SUBLVDS_720P_120FPS -DHI_RELEASE -DHI_XXXX -lpthread -lm -ldl -lSDL -lSDL_ttf -Wl,-rpath -DISP_V2 -DHI_ACODEC_TYPE_INNER -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -ffunction-sections -mno-unaligned-access -fno-aggressive-loop-optimizations -ldl -o appmain appmain.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common/sample_comm_vpss.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common/sample_comm_sys.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common/sample_comm_isp.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common/sample_comm_audio.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common/loadbmp.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common/sample_comm_ive.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common/sample_comm_vo.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common/sample_comm_venc.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common/sample_comm_vi.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/sample/achcamapp/../common/sample_comm_vda.o /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/libmpi.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/libtde.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/libVoiceEngine.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/libupvqe.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/libdnvqe.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/libisp.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/libsns_mn34220.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/lib_cmoscfg.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/lib_iniparser.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/lib_hiae.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/lib_hiawb.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/lib_hiaf.a /home/ach/Hi3516A_SDK_V2.0.7.0/mpp/lib/lib_hidefog.a /opt/sdl_lib/lib/libfreetype.a /opt/sdl_lib/lib/libSDL.a /opt/sdl_lib/lib/libSDL_ttf.a /opt/sdl_lib/lib/libfreetype.so /opt/sdl_lib/lib/libSDL.so /opt/sdl_lib/lib/libSDL_ttf.so
如有其他问题可以私信本人
海思osd+freetype+SDL+SDL_ttf编译成功后,Makefile的编写相关推荐
- 51-20210316华为海思Hi3516DV300的linux系统编译2(SPI模式)
51-20210316华为海思Hi3516DV300的linux系统编译 2021/3/16 10:42 https://xueqiu.com/7970718062/159110439 官井想开挖掘机 ...
- 52-20210322华为海思Hi3516DV300的linux系统编译(eMMC模式)1
52-20210322华为海思Hi3516DV300的linux系统编译(eMMC模式) 2021/3/22 18:00 请严重注意: 本文所使用的的SDK是:Hi3516CV500R001C02SP ...
- 02-20210222华为海思Hi3518EV300鸿蒙系统的编译
02-20210222华为海思Hi3518EV300鸿蒙系统的编译 2021/2/22 15:15 1.源码获取: https://device.harmonyos.com/cn/docs/start ...
- 51-20210316华为海思Hi3516DV300的linux系统编译1(SPI模式)
51-20210316华为海思Hi3516DV300的linux系统编译 2021/3/16 10:42 https://xueqiu.com/7970718062/159110439 官井想开挖掘机 ...
- 海思 OSD 抗锯齿、背景透明叠加水印
文章目录 前言 1.背景透明 2.使用混合模式去除锯齿 资料链接 前言 使用海思芯片叠加osd上一篇文章中已经介绍了,基本使用方法不再介绍,本文章介绍osd抗锯齿和背景透明的用法.需要结合自己的芯片型 ...
- 海思3536:PC客户端编译过程报错及解决方法
1.Hi3536V100R001C02SPC040版本编译出错 --------- 错误 4 error LNK2001: 无法解析的外部符号 _IveOpenFile D:\share\Hi3536 ...
- linux中命令对c文件进行编译,Linux下C语言编译基础及makefile的编写
这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 1.源程序的编译 在L ...
- 字体/字库: [ 下载 ] > freetype sdl sdl_ttf
freetype 下载: http://download.savannah.gnu.org/releases/freetype/ 选择版本: freetype-2.7.tar.gz 生成的库大小: ...
- 用爱思助手自签名ipa文件成功后安装失败
设备:iPad pro 2021 系统版本:ios15.6.1 ipa文件已签名成功
最新文章
- nginx反向代理取得IP地址
- 操作系统课设--使用信号量解决生产者/消费者同步问题
- 中央空调“国进外退”,格力、美的、海尔三大白如何角逐新市场?
- UVA 11100 The Trip, 2007
- Node.js 使用jQuery取得Nodejs http服务端返回的JSON对象示例
- Tensorflow 踩的坑(一)
- VDI中创建集合时使用Sysprep应答文件碰到的问题
- 自动刷新网页脚本_抢不到票?你离idol只差一个大麦抢票脚本。
- 南京大学计算机专业考研难吗,计算机专业考研,除了南大和中山,还有哪些大学难度大性价比高...
- ps抠图 淘宝抠图
- Linux运行权限1009无标题,Linux权限管理练习
- 全智通A+常见问题汇总解答—A+客户应收款:总欠款和期内欠款金额不等
- Pycharm下载与安装教程
- 联想蓝牙没有连接的地方计算机,联想笔记本连不上蓝牙怎么办 笔记本连接蓝牙耳机没声音解决方法...
- 如何学好编程%2B(精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你%2529
- 北漂经历 | 我在北京这几年(全)
- Java图片处理框架
- 图解BlendingStacking
- 综述:一文带你了解情感分析的方法有几种
- Qt编写自定义控件3-速度仪表盘