參考:
https://blog.csdn.net/qq_29350001/article/details/79075800
網上相關功能實現資料有很多,關鍵操作:海思osd+freetype+SDL+SDL_ttf字體顏色。我的虛擬機是 Ubuntu 14.04,那首先移植 freetype+SDL+SDL_ttf 這三個庫。
一、庫移植
(1)freetype下載安裝
1、下載
freetype下載
選擇下載版本爲: freetype-2.4.10.tar.gz
2、安裝
解壓: # tar -xvf freetype-2.4.10.tar.gz
進入freetype文件目錄: # cd freetype-2.4.10
執行: # ./configure CC=arm-hisiv300-linux-gcc –host=arm-hisiv300-linux
編譯:make && make install
(2)SDL下載安裝
1、下載
SDL下載
選擇下載版本:SDL-1.2.15.tar.gz
2、安裝
解壓: # tar -xvf SDL-1.2.15.tar.gz
進入SDL文件目錄: # cd SDL-1.2.15/
執行: # ./configure CC=arm-hisiv300-linux-gcc –host=arm-hisiv300-linux
編譯:make && make install
(3)SDL_ttf下載安裝
1、下載
SDL_ttf下載
選擇下載版本:SDL_ttf-2.0.11.tar.gz
2、安裝
解壓: # tar -xvf SDL_ttf-2.0.11.tar.gz
進入SDL_ttf文件目錄: # cd SDL_ttf-2.0.11/
執行: # ./configure CC=arm-hisiv300-linux-gcc –host=arm-hisiv300-linux –with-freetype-prefix=/usr/local/ –with-sdl-prefix=/usr/local/
編譯: make && make install
注意:將上面的 – 改爲兩個 -
這是CSDN編譯器的bug!!
二、測試
(1)拷貝生成sdl庫
mkdir /opt/sdl_lib
cd /opt/sdl_lib
cp /usr/local/include/ ./ -rf
cp /usr/local/lib/ ./ -rf
(2)編寫測試程序
/************************************************************
> File Name: test.c
> Author: Sues
> Mail: [email protected]
> Created Time: 2017年02月28日 星期二 21時47分05秒
************************************************************/
#include<stdio.h>
#include "SDL.h"
#include "SDL_ttf.h"
int main(int argc, const char *argv[])
{
char * pstr = "hello";
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("./simhei.ttf", 48);
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, pstr, 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);
SDL_SaveBMP(temp, "save.bmp");
SDL_FreeSurface(text);
SDL_FreeSurface(temp);
TTF_CloseFont(font);
TTF_Quit();
return 0;
}
3)編譯
# arm-hisiv300-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
12
想了解更多,參看:UNIX再學習 – 靜態庫與共享庫
(4)在開發版上執行 test
模組燒寫,參看:Hi3516A開發– 生成燒寫最小文件系統 squashfs
在test文件下放置simhei.ttf文件,這樣才能找到字體