osd测试文件,编译运行一直出现 font couldn't load, 发现其实是库没有正确安装。
注意安装时Host要用 arm-hisiv500-linux,gcc位置根据你自己具体安装位置调整。
############## zlib ##############
############## 1.2.11 ##############
CC=aarch64-himix100-linux-gcc ./configure --prefix=/hisi_ext/zlib
make
sudo make install
############## freetype ##############
############## 2.10.2 ##############
./configure --prefix=/hisi_ext/freetype \
--host=arm-hisiv500-linux CC=aarch64-himix100-linux-gcc \
--enable-freetype-config \
--with-png=no --with-zlib=no --with-harfbuzz=no
make
sudo make install
############## SDL ##############
############## 1.2.15 ##############
sudo ./configure --prefix=/hisi_ext/sdl \
--host=arm-hisiv500-linux \
CC=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc
(make clean)
make
sudo make install
############## SDL_TTF ##############
############## sdl-ttf-sdl-1.2##############
./configure --prefix=/hisi_ext/sdl-ttf \
--host=arm-hisiv500-linux \
CC=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc \
--with-sdl-prefix=/hisi_ext/sdl \
--with-ft-prefix=/hisi_ext/freetype \
LDFLAGS="-L/hisi_ext/freetype/lib -L/hisi_ext/zlib/lib -L/hisi_ext/sdl/lib -lSDL -lfreetype -lz" \
CPPFLAGS="-I/hisi_ext/freetype/include -I/hisi_ext/zlib/include -I/hisi_ext/sdl/include"
make
sudo make install
############## Test_demo ##############
############## test.c ##############
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "SDL.h"
#include "SDL_ttf.h"
#include "time.h"
#define FONT_PATH "./Ubuntu-BI.ttf"
int string_to_bmp(char *pu8Str);
int cnt = 0;
int main()
{
time_t now;
struct tm *ptm;
char timestr[100] = {0};
while(1)
{
usleep(1000000);
time(&now);
ptm = localtime(&now);
snprintf(timestr,100,"时间%d-%02d-%02d %02d:%02d:%02d",ptm->tm_year+1900,ptm->tm_mon+1,ptm->tm_mday,ptm->tm_hour,ptm->tm_min,ptm->tm_sec);
string_to_bmp(timestr);
memset(timestr,0,100);
if(cnt++ > 5)
{
break;
}
}
return 0;
}
int string_to_bmp(char *pu8Str)
{
SDL_PixelFormat *fmt;
TTF_Font *font;
SDL_Surface *text, *temp;
if (TTF_Init() < 0 )
{
fprintf(stderr, "Couldn't initialize TTF: %s\n",SDL_GetError());
SDL_Quit();
}
font = TTF_OpenFont(FONT_PATH, 80);
if ( font == NULL )
{
fprintf(stderr, "Couldn't load %d pt font from %s: %s\n",18,"ptsize", SDL_GetError());
}
SDL_Color forecol = { 0xff, 0xff, 0xff, 0xff };
text = TTF_RenderUTF8_Solid(font, pu8Str, forecol);
fmt = (SDL_PixelFormat*)malloc(sizeof(SDL_PixelFormat));
memset(fmt,0,sizeof(SDL_PixelFormat));
fmt->BitsPerPixel = 16;
fmt->BytesPerPixel = 2;
fmt->colorkey = 0xffffffff;
fmt->alpha = 0xff;
temp = SDL_ConvertSurface(text,fmt,0);
char savename[10] = {0};
snprintf(savename,10,"%d.bmp",cnt);
printf("savename = %s\n",savename);
SDL_SaveBMP(temp, savename);
SDL_FreeSurface(text);
SDL_FreeSurface(temp);
TTF_CloseFont(font);
TTF_Quit();
return 0;
}
############## Makefile ##############
SDL_PATH = /hisi_ext/sdl/include/SDL
SDL_TTL_PATH = /hisi_ext/sdl-ttf/include/SDL
FT_PATH = /hisi_ext/freetype/include
Z_PATH = /hisi_ext/zlib/include
SDL_LIB_PATH = /hisi_ext/sdl/lib
SDL_TTF_LIB_PATH = /hisi_ext/sdl-ttf/lib
FT_LIB_PATH = /hisi_ext/freetype/lib
Z_LIB_PATH = /hisi_ext/zlib/lib
CCO = aarch64-himix100-linux-gcc
CC = $(CCO)
INCLUDE = -I$(FT_PATH) -I$(SDL_TTL_PATH) -I$(SDL_PATH) -I$(Z_PATH)
LIB = -L$(FT_LIB_PATH) -L$(SDL_LIB_PATH) -L$(SDL_TTF_LIB_PATH) -L$(Z_LIB_PATH)
SERVER_OBJS = soapC.o stdsoap2.o duration.o wsaapi.o soapClient.o onvif_cilent.o
all: arm
arm:
$(CCO) *.c $(INCLUDE) $(LIB) -lfreetype -lSDL -lSDL_ttf -lz -o test
clean:
rm -f *.o test
本文档详细介绍了在Hi3559平台上,为OSD(On-Screen Display)功能进行交叉编译所需的库,包括zlib 1.2.11、freetype 2.10.2、SDL 1.2.15以及sdl-ttf。在编译过程中,特别强调了字体加载失败的问题,指出可能原因在于库未正确安装。指导中提到了使用arm-hisiv500-linux作为Host,并提示用户根据实际环境调整gcc路径。
979

被折叠的 条评论
为什么被折叠?



