1。Linux下編譯X264:
其實在windows下使用vc已經編譯過了,不過聽到有人說在linux下編好了,我也就嘗試做一下,況且x264源代碼的makefile已經做好了,我只需要做的就是把文件copy一下,然后make 一下就可以了。
首先把x264-060805復制到目錄下。
1、I64,uI64的錯誤,if (delta > 32767I64 || delta < -32768I64),這是lsp添加的,把注釋部分換一下,去除I64的使用
2、nasm。我用的ubuntu沒有安裝nasm,所以一些匯編無法通過,直接安裝一下就可以了ftp://ftp.zytor.com/pub/nasm/snapshots/
然后在x264-060805下make,就編譯好了可執行文件x264,有600多K,比vc下的要大,估計是添加的模塊不同,或者編譯方法不同。暫且不管
簡單測試一下,./x264 -o test.264 file.yuv 176x144 得到了.264文件,用vlc播放,可以播放。暫時證明是編譯正確吧。
2。最近移植x264的過程。
????? 舊的是沒有--disable-asm和--cross-compile這兩個configure的支持的(前者是對x86的匯編優化,交叉編譯的時候當然不要的,后者是交叉編譯環境設置)。其實和我之前的移植過程差不多,這里寫個步驟:
我這里打開了動態鏈接和debug。前者可以生成libx264.so,后者可以在你調程序用gdb的時候step into庫函數里。
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
includedir=${prefix}/include
ARCH=ARM
SYS=LINUX
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=/home/peter/workspace'
SONAME=libx264.so.49
default
: $(SONAME)
?
arm-linux-ar rc libx264.a $(OBJS) $(OBJASM)
arm-linux-ranlib libx264.a
make install