交叉编译x264

本文介绍如何为ARM Linux平台配置并编译x264库,包括启用动态链接和debug支持,修改配置文件以适配目标平台,及调整编译参数以优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.配置 
  

./configure --prefix= /usr/local/arm/3.4.1/arm-linux/    --enable-shared --enable-debug 
  
我这里打开了动态链接和debug 。前者可以生成 libx264.so ,后者可以在你调程序用 gdb 的时候 step into 库函数里。 
2.修改配置参数 
  
修改config.mak : 
prefix= /usr/local/arm/3.4.1/arm-linux/  
exec_prefix=${prefix} 
bindir=${exec_prefix}/bin 
libdir=${exec_prefix}/lib 
includedir=${prefix}/include 
这里改为 ARM
ARCH=ARM
SYS=LINUX 
这里改为 arm-linux-gcc
CC=arm-linux-gcc 
这里去掉 -DHAVE_MMXEXT -DHAVE_SSE2 -DARCH_X86
CFLAGS=-Wall -I. -O4 -ffast-math -D__X264__ -DHAVE_MALLOC_H -DSYS_LINUX -DHAVE_PTHREAD -s -fomit-frame-pointer 
LDFLAGS= -lm -lpthread -s 
AS=nasm 
ASFLAGS=-O2 -f elf 
VFW=no 
GTK=no 
EXE= 
VIS=no 
HAVE_GETOPT_LONG=1 
DEVNULL=/dev/null 
CONFIGURE_ARGS= '--enable-shared' '--prefix= /usr/local/arm/3.4.1/arm-linux/ ' 
SONAME=libx264.so.49 
default: $(SONAME) 
  
修改Makefile ,将 66~68 行的 ar ranlib 改为 arm 下的: 
  
libx264.a: .depend $(OBJS) $(OBJASM) 
                 arm-linux-ar  rc libx264.a $(OBJS) $(OBJASM) 
                 arm-linux-ranlib  libx264.a

3、修改X264程序 ,首先对程序进行一些地方的修改,否则会出现关于cpu_set_t的错 误,关于cpu_set_t的以下那段代码是关于计算CPU内核数的代码,所以将np=1(我们所使用的计算机都是单核)直接返回,而没有用它的计算, #elif defined(SYS_LINUX) unsigned int bit; int np; cpu_set_t p_aff; memset( &p_aff, 0, sizeof(p_aff) );sched_getaffinity( 0, sizeof(p_aff), &p_aff );for( np = 0;bit = 0; bit < sizeof(p_aff); bit++ );np += (((uint8_t *)&p_aff)[bit / 8] >> (bit % 8)) & 1;return np;改成了:#elif defined(SYS_LINUX) int np;np=1; return np;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值