请先移步我的上一篇转载博文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的编写相关推荐

  1. 51-20210316华为海思Hi3516DV300的linux系统编译2(SPI模式)

    51-20210316华为海思Hi3516DV300的linux系统编译 2021/3/16 10:42 https://xueqiu.com/7970718062/159110439 官井想开挖掘机 ...

  2. 52-20210322华为海思Hi3516DV300的linux系统编译(eMMC模式)1

    52-20210322华为海思Hi3516DV300的linux系统编译(eMMC模式) 2021/3/22 18:00 请严重注意: 本文所使用的的SDK是:Hi3516CV500R001C02SP ...

  3. 02-20210222华为海思Hi3518EV300鸿蒙系统的编译

    02-20210222华为海思Hi3518EV300鸿蒙系统的编译 2021/2/22 15:15 1.源码获取: https://device.harmonyos.com/cn/docs/start ...

  4. 51-20210316华为海思Hi3516DV300的linux系统编译1(SPI模式)

    51-20210316华为海思Hi3516DV300的linux系统编译 2021/3/16 10:42 https://xueqiu.com/7970718062/159110439 官井想开挖掘机 ...

  5. 海思 OSD 抗锯齿、背景透明叠加水印

    文章目录 前言 1.背景透明 2.使用混合模式去除锯齿 资料链接 前言 使用海思芯片叠加osd上一篇文章中已经介绍了,基本使用方法不再介绍,本文章介绍osd抗锯齿和背景透明的用法.需要结合自己的芯片型 ...

  6. 海思3536:PC客户端编译过程报错及解决方法

    1.Hi3536V100R001C02SPC040版本编译出错 --------- 错误 4 error LNK2001: 无法解析的外部符号 _IveOpenFile D:\share\Hi3536 ...

  7. linux中命令对c文件进行编译,Linux下C语言编译基础及makefile的编写

    这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 1.源程序的编译 在L ...

  8. 字体/字库: [ 下载 ] > freetype sdl sdl_ttf

    freetype  下载:  http://download.savannah.gnu.org/releases/freetype/ 选择版本: freetype-2.7.tar.gz 生成的库大小: ...

  9. 用爱思助手自签名ipa文件成功后安装失败

    设备:iPad pro 2021 系统版本:ios15.6.1 ipa文件已签名成功

最新文章

  1. nginx反向代理取得IP地址
  2. 操作系统课设--使用信号量解决生产者/消费者同步问题
  3. 中央空调“国进外退”,格力、美的、海尔三大白如何角逐新市场?
  4. UVA 11100 The Trip, 2007
  5. Node.js 使用jQuery取得Nodejs http服务端返回的JSON对象示例
  6. Tensorflow 踩的坑(一)
  7. VDI中创建集合时使用Sysprep应答文件碰到的问题
  8. 自动刷新网页脚本_抢不到票?你离idol只差一个大麦抢票脚本。
  9. 南京大学计算机专业考研难吗,计算机专业考研,除了南大和中山,还有哪些大学难度大性价比高...
  10. ps抠图 淘宝抠图
  11. Linux运行权限1009无标题,Linux权限管理练习
  12. 全智通A+常见问题汇总解答—A+客户应收款:总欠款和期内欠款金额不等
  13. Pycharm下载与安装教程
  14. 联想蓝牙没有连接的地方计算机,联想笔记本连不上蓝牙怎么办 笔记本连接蓝牙耳机没声音解决方法...
  15. 如何学好编程%2B(精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你%2529
  16. 北漂经历 | 我在北京这几年(全)
  17. Java图片处理框架
  18. 图解BlendingStacking
  19. 综述:一文带你了解情感分析的方法有几种
  20. Qt编写自定义控件3-速度仪表盘

热门文章

  1. JFinal 源码build脚本
  2. vivo 全球商城:商品系统架构设计与实践
  3. 网络DevOps探索与实践
  4. 亿级用户基于微服务的互联网系统稳定性~
  5. 微博基于Flink的机器学习实践
  6. 多个线程为了同个资源打起架来了,该如何让他们安分?
  7. 支付宝何以支撑双十一4200万次/秒的数据库请求峰值?
  8. 由优劣语言之争引起的思考
  9. 推荐8个舍不得分享的实用软件和网站,解决很多需求
  10. 都 2020 年了,这些 OKR 的坑你还要踩吗?