libass分析1-源码分析-起源-源码编译

Author: wencoo
Blog:https://wencoo.blog.csdn.net/
Date: 05/12/2023
Email: jianwen056@aliyun.com
Wechat:wencoo824
QQ:1419440391
Details:

目录

正文 或 背景

源码下载

github下载源码,版本:release 0.17.1 (released 2023-02-26)

源码目录结构

autogen.sh  configure.ac  libass        m4           Makefile_util.am  test
Changelog   COPYING       libass.pc.in  MAINTAINERS  profile
compare     fuzz          ltnasm.sh     Makefile.am  README.md

源码编译

安装依赖

sudo apt-get install dh-autoreconf -y

步骤

$ ./autogen.sh

$ ./configure --prefix=/home/hasx/libass-0.17.1/build

$ make -j4
$ make install

编译完无错误。make install输出:

make[1]: 进入目录“/home/hasx/libass-0.17.1”
 /usr/bin/mkdir -p '/home/hasx/libass-0.17.1/build/lib'
 /bin/bash ./libtool   --mode=install /usr/bin/install -c   libass/libass.la '/home/hasx/libass-0.17.1/build/lib'
libtool: install: /usr/bin/install -c libass/.libs/libass.so.9.2.1 /home/hasx/libass-0.17.1/build/lib/libass.so.9.2.1
libtool: install: (cd /home/hasx/libass-0.17.1/build/lib && { ln -s -f libass.so.9.2.1 libass.so.9 || { rm -f libass.so.9 && ln -s libass.so.9.2.1 libass.so.9; }; })
libtool: install: (cd /home/hasx/libass-0.17.1/build/lib && { ln -s -f libass.so.9.2.1 libass.so || { rm -f libass.so && ln -s libass.so.9.2.1 libass.so; }; })
libtool: install: /usr/bin/install -c libass/.libs/libass.lai /home/hasx/libass-0.17.1/build/lib/libass.la
libtool: install: /usr/bin/install -c libass/.libs/libass.a /home/hasx/libass-0.17.1/build/lib/libass.a
libtool: install: chmod 644 /home/hasx/libass-0.17.1/build/lib/libass.a
libtool: install: ranlib /home/hasx/libass-0.17.1/build/lib/libass.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/sbin" ldconfig -n /home/hasx/libass-0.17.1/build/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /home/hasx/libass-0.17.1/build/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
 /usr/bin/mkdir -p '/home/hasx/libass-0.17.1/build/include/ass'
 /usr/bin/install -c -m 644 libass/ass.h libass/ass_types.h '/home/hasx/libass-0.17.1/build/include/ass'
 /usr/bin/mkdir -p '/home/hasx/libass-0.17.1/build/lib/pkgconfig'
 /usr/bin/install -c -m 644 libass.pc '/home/hasx/libass-0.17.1/build/lib/pkgconfig'
make[1]: 离开目录“/home/hasx/libass-0.17.1”

build中生成内容如下:

$ tree .
.
├── include
│   └── ass
│       ├── ass.h
│       └── ass_types.h
└── lib
    ├── libass.a
    ├── libass.la
    ├── libass.so -> libass.so.9.2.1
    ├── libass.so.9 -> libass.so.9.2.1
    ├── libass.so.9.2.1
    └── pkgconfig
        └── libass.pc
4 directories, 8 files

运行示例程序

在目录结构中,找到test目录,其中有test.c的示例程序,下面进行编译运行。

创建CMakeLists.txt,内容如下:

cmake_minimum_required(VERSION 3.0)

project(testout)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED true)

set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS_DEBUG "-O3 -Wall -g -ggdb")

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")

find_package(PkgConfig REQUIRED)

message(STATUS "CMAKE_CURRENT_SOURCE_DIR:" ${CMAKE_CURRENT_SOURCE_DIR})

link_libraries(
	${PROJECT_SOURCE_DIR}/../build/lib/libass.a
)

link_directories(

    )

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/../build/include
	
	/usr/include/libpng16
    )

set(Dir_src
    test.c 
    )

add_executable(${PROJECT_NAME} ${Dir_src} )

target_link_libraries(${PROJECT_NAME}
	z  
	# stdc++ pthread 
	png
	# ass  
	freetype harfbuzz fribidi fontconfig
	# libass.a 
	m  
)

创建build目录,

cd build
cmake ..
make -j4

示例程序编译完成。

gcc的编译选项

gcc test.c `pkg-config --cflags --libs  libpng` -I/home/hasx/libass-0.17.1/build/include -lass -o out.a

示例程序功能

读取ass文件,生成图片

./testout  008.png wwwww11110810.ass 5

由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 wencoo824。QQ:1419440391。

参考

技术交流

欢迎加微信,搜索"wencoo824",进行技术交流,备注”博客音视频技术交流“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WenCoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值