每次只编译一个库的原因,好像是缺少autopoint
root@Ubuntu32:/home/zhangbin/vlc/android/android# sh compile.sh
For an ARMv6 device without FPU, you need a build without FPU:
$ export NO_FPU=1
For an ARMv5 device or the Android emulator, you need an ARMv5 build:
$ export NO_ARMV6=1
If you plan to use a release build, run 'compile.sh release'
VLC source found
Building tools
You are ready to build VLC and its contribs
Building the contribs
Guessing build system... i686-linux-gnu
Creating configuration file... config.mak
Bootstrap completed. 这好像是vlc的bootstrap
Run "make" to start compilation.
Other targets:
* make install same as "make"
* make prebuilt fetch and install prebuilt binaries
* make list list packages
* make fetch fetch required source tarballs
* make fetch-all fetch all source tarballs
* make distclean clean everything and undo bootstrap
* make mostlyclean clean everything except source tarballs
* make clean clean everything
* make package prepare prebuilt packages
make: Nothing to be done for `fetch'.
mkdir -p -- /home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/share/aclocal &&
cd gnutls && autoreconf -fiv -I/home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/share/
aclocal
touch -r .ffmpeg .dep-ffmpeg
cd postproc &&
CC="arm-linux-androideabi-gcc --sysroot=/home/zhangbin/android/android-ndk-r8e/platforms/android-9/arch-arm"
CXX="arm-linux-androideabi-g++
--sysroot=/home/zhangbin/android/android-ndk-r8e/platforms/android-9/arch-arm"
LD="arm-linux-androideabi-ld" AR="arm-linux-androideabi-ar"
RANLIB="arm-linux-androideabi-ranlib"
STRIP="arm-linux-androideabi-strip"
PATH="/home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/bin:/home/zhangbin/vlc/android/android/vlc/extras/tools/build/bin:/home/zhangbin/vlc/android/android/vlc/extras/tools/build/bin:/home/zhangbin/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux- 这是NDK的工具啊x86/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zhangbin/android/android-sdk-linux/platform-tools:/home/zhangbin/android/android-sdk-linux/tools" 这SDK的工具
vlc的extra工具,这几个工具,我好像又在系统里头自己装了下???
cmake yasm ragel
root@Ubuntu32:/home/zhangbin/vlc/android/android# apt-get install ragel 安装ragel 库。
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
ragel
0 upgraded, 1 newly installed, 0 to remove and 121 not upgraded.
Need to get 980 kB of archives.
After this operation, 2,221 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/universe ragel i386 6.7-1build1 [980 kB]
Fetched 980 kB in 6s (147 kB/s)
Selecting previously unselected package ragel.
(Reading database ... 176015 files and directories currently installed.)
Unpacking ragel (from .../ragel_6.7-1build1_i386.deb) ...
Processing triggers for man-db ...
Setting up ragel (6.7-1build1) ...
root@Ubuntu32:/home/zhangbin/vlc/android/android#
CPPFLAGS="-g-mfpu=vfpv3-d16 -mcpu=cortex-a8 -mthumb -mfloat-abi=softfp-O2
-I/home/zhangbin/android/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/include
-I/home/zhangbin/android/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include
-I/home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/include"
CFLAGS=" -g -mfpu=vfpv3-d16 -mcpu=cortex-a8 -mthumb -mfloat-abi=softfp -O2
-I/home/zhangbin/android/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/include
-I/home/zhangbin/android/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include
-I/home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/include
-g"
CXXFLAGS=" -g -mfpu=vfpv3-d16 -mcpu=cortex-a8 -mthumb -mfloat-abi=softfp -O2
-I/home/zhangbin/android/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/include -I/home/zhangbin/android/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include
-I/home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/include -g"
LDFLAGS=" -L/home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/lib"
/configure \ 这是在配置postproc么???
--extra-cflags="-g -mfpu=vfpv3-d16 -mcpu=cortex-a8 -mthumb -mfloat-abi=softfp -O2 -I/home/zhangbin/android/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/include -I/home/zhangbin/android/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I/home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/include" \
--extra-ldflags=" -L/home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/lib" 这居然是contrib里的,难道是系统库?
原来是编译好的vlc的系统静态库都放在这个目录下,作为链接用。
--cc="arm-linux-androideabi-gcc 交叉编译工具链
--sysroot=/home/zhangbin/android/android-ndk-r8e/platforms/android-9/arch-arm"
这是工具链的sysroot,里头都是android系统相关的库。
我感觉这是ffmpeg的configure指令啊??
--disable-debug
--enable-gpl
--enable-postproc 这个库不是ffmpeg的???
--enable-small
--enable-cross-compile
--cross-prefix=arm-linux-androideabi-
--disable-runtime-cpudetect
--arch=arm --cpu=cortex-a8 --enable-neon 这三个很重要啊
--target-os=linux
--enable-pic
--enable-pthreads \
--prefix="/home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi"
--enable-static --disable-shared 编译静态库。
autoreconf: Entering directory `.'
autoreconf: running: autopoint --force
Can't exec "autopoint": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 345. 需要autopoint啊。
autoreconf: failed to run autopoint: No such file or directory
autoreconf: autopoint is needed because this package uses Gettext
make: *** [.gnutls] Error 1
root@Ubuntu32:/home/zhangbin/vlc/android/android# apt-get install gettext 已经安装过了。
Reading package lists... Done
Building dependency tree
Reading state information... Done
gettext is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 121 not upgraded.
root@Ubuntu32:/home/zhangbin/vlc/android/android#
make: *** Waiting for unfinished jobs....
install prefix /home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi
source path .
C compiler arm-linux-androideabi-gcc --sysroot=/home/zhangbin/android/android-ndk-r8e/platforms/android-9/arch-arm
ARCH arm (cortex-a8)
big-endian no
runtime cpu detection no
ARMv5TE enabled yes
ARMv6 enabled yes
ARMv6T2 enabled yes
ARM VFP enabled yes
IWMMXT enabled no
NEON enabled no 这个怎么没有被启用呢????NEON 啊。。
debug symbols no
optimize for size yes 优化大小。
optimizations yes
static yes
shared no
postprocessing support yes 后处理,这个要,这个是软件的么??这是vlc的配置还是ffmpeg的呢???
threading support pthreads
License: GPL version 2 or later
Creating config.mak and config.h...
继续编译postproc啊。。。为啥还要make install-libs install-headers 呢?
cd postproc && make install-libs install-headers
make[1]: Entering directory `/home/zhangbin/vlc/android/android/vlc/contrib/android/postproc'
CC libpostproc/postprocess.o
INSTALL libpostproc/postprocess.h
INSTALL libpostproc/libpostproc.pc
postproc是ffmpeg的,而且需要libav库的支持。
In file included from /home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi
/include/libavutil/log.h:26:0, 头文件。
from /home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/include
/libavutil/avassert.h:32,
from libpostproc/postprocess.c:78:
/home/zhangbin/vlc/android/android/vlc/contrib/arm-linux-androideabi/include/libavutil/attributes.h:36:0: warning: "av_always_inline" redefined [enabled by default]
In file included from libpostproc/postprocess.c:76:0:
./config.h:14:0: note: this is the location of the previous definition
AR libpostproc/libpostproc.a 生成了这个静态库
INSTALL
libpostproc/libpostproc.a
make[1]: Leaving directory `/home/zhangbin/vlc/android/android
/vlc/contrib/android/postproc' 源码存放路径
touch .postproc 这是创建啥呢???
root@Ubuntu32:/home/zhangbin/vlc/android/android#
apt-get install autopoint 安装autopoint
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
autopoint
0 upgraded, 1 newly installed, 0 to remove and 121 not upgraded.
Need to get 604 kB of archives.
After this operation, 684 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/main autopoint all 0.18.1.1-5ubuntu3 [604 kB]
Fetched 604 kB in 3s (175 kB/s)
Selecting previously unselected package autopoint.
(Reading database ... 175347 files and directories currently installed.)
Unpacking autopoint (from .../autopoint_0.18.1.1-5ubuntu3_all.deb) ...
Processing triggers for man-db ...
Setting up autopoint (0.18.1.1-5ubuntu3) ...
root@Ubuntu32:/home/zhangbin/vlc/android/android# apt-get install cmake 安装cmake
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
cmake-data emacsen-common libxmlrpc-core-c3
The following NEW packages will be installed:
cmake cmake-data emacsen-common libxmlrpc-core-c3
0 upgraded, 4 newly installed, 0 to remove and 121 not upgraded.
Need to get 5,348 kB of archives.
After this operation, 13.9 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main libxmlrpc-core-c3 i386 1.16.33-3.1ubuntu5.1 [179 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ precise/main emacsen-common all 1.4.22ubuntu1 [16.9 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main cmake-data all 2.8.7-0ubuntu5 [754 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main cmake i386 2.8.7-0ubuntu5 [4,399 kB]
Fetched 5,348 kB in 23s (227 kB/s)
Selecting previously unselected package libxmlrpc-core-c3.
(Reading database ... 175354 files and directories currently installed.)
Unpacking libxmlrpc-core-c3 (from .../libxmlrpc-core-c3_1.16.33-3.1ubuntu5.1_i386.deb) ...
Selecting previously unselected package emacsen-common.
Unpacking emacsen-common (from .../emacsen-common_1.4.22ubuntu1_all.deb) ...
Selecting previously unselected package cmake-data.
Unpacking cmake-data (from .../cmake-data_2.8.7-0ubuntu5_all.deb) ...
Selecting previously unselected package cmake.
Unpacking cmake (from .../cmake_2.8.7-0ubuntu5_i386.deb) ...
Processing triggers for man-db ...
Setting up libxmlrpc-core-c3 (1.16.33-3.1ubuntu5.1) ...
Setting up emacsen-common (1.4.22ubuntu1) ...
emacsen-common: Handling install of emacsen flavor emacs
Setting up cmake-data (2.8.7-0ubuntu5) ...
emacsen-common: Handling install of emacsen flavor emacs
Setting up cmake (2.8.7-0ubuntu5) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
root@Ubuntu32:/home/zhangbin/vlc/android/android#
root@Ubuntu32:/home/zhangbin/ffmpeg# apt-get install yasm 安装yasm
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
yasm
0 upgraded, 1 newly installed, 0 to remove and 121 not upgraded.
Need to get 604 kB of archives.
After this operation, 1,667 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/main yasm i386 1.1.0-1 [604 kB]
Fetched 604 kB in 4s (148 kB/s)
Selecting previously unselected package yasm.
(Reading database ... 176055 files and directories currently installed.)
Unpacking yasm (from .../archives/yasm_1.1.0-1_i386.deb) ...
Processing triggers for man-db ...
Setting up yasm (1.1.0-1) ...
root@Ubuntu32:/home/zhangbin/ffmpeg#
================================================
vlc用的这个postproc不在ffmpeg中,看来这个ffmpeg比较老了。
新版的1.2是有的:
=========================================================================================
#!/bin/sh
if [ -z "$ANDROID_NDK" -o -z "$ANDROID_ABI" ]; then
echo "Please set the ANDROID_NDK environment variable with its path.\n"
echo "ANDROID_ABI should match your ABI: armeabi-v7a, armeabi or ..."
exit 1
fi
# Must use android-9 here. Any replacement functions needed are in the vlc-android/jni 必须是9,函数都在 vlc-android/jni 中。
# folder.
ANDROID_API=android-9 这个是指啥?
VLC_SOURCEDIR=.. VLC源码目录
CFLAGS="-g -O2 -fstrict-aliasing -funsafe-math-optimizations"
if [ -n "$HAVE_ARM" ]; then
CFLAGS="${CFLAGS} -mlong-calls" ARM平台的话,编译选项如下。
fi
LDFLAGS="-Wl,-Bdynamic,-dynamic-linker=/system/bin/linker -Wl,--no-undefined" 链接选项。
if [ -n "$HAVE_ARM" ]; then
if [ ${ANDROID_ABI} = "armeabi-v7a" ]; then ARMV7A是有neon的,链接是呀有a8这样的。
EXTRA_PARAMS=" --enable-neon"
LDFLAGS="$LDFLAGS -Wl,--fix-cortex-a8"
fi
fi
CPPFLAGS="-I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/include -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/libs/${ANDROID_ABI}/include"
LDFLAGS="$LDFLAGS -L${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/libs/${ANDROID_ABI}"
SYSROOT=$ANDROID_NDK/platforms/$ANDROID_API/arch-$PLATFORM_SHORT_ARCH
ANDROID_BIN=`echo $ANDROID_NDK/toolchains/${PATH_HOST}-${GCCVER}/prebuilt/\`uname|tr A-Z a-z\`-*/bin/`
CROSS_COMPILE=${ANDROID_BIN}/${TARGET_TUPLE}-
CPPFLAGS="$CPPFLAGS" \
CFLAGS="$CFLAGS ${VLC_EXTRA_CFLAGS}" \
CXXFLAGS="$CFLAGS" \
LDFLAGS="$LDFLAGS" \
CC="${CROSS_COMPILE}gcc --sysroot=${SYSROOT}" \
CXX="${CROSS_COMPILE}g++ --sysroot=${SYSROOT}" \
NM="${CROSS_COMPILE}nm" \
STRIP="${CROSS_COMPILE}strip" \
RANLIB="${CROSS_COMPILE}ranlib" \
AR="${CROSS_COMPILE}ar" \
sh $VLC_SOURCEDIR/configure --host=$TARGET_TUPLE --build=x86_64-unknown-linux $EXTRA_PARAMS \ 这到底是啥意思。
--enable-live555 --enable-realrtsp \
--enable-avformat \
--enable-swscale \
--enable-avcodec \
--enable-opus \
--enable-opensles \
--enable-android-surface \
--enable-mkv \
--enable-taglib \
--enable-dvbpsi \
--disable-vlc --disable-shared \ 禁用掉vlc??
--disable-update-check \
--disable-vlm \
--disable-dbus \
--disable-lua \
--disable-vcd \
--disable-v4l2 \ 不支持摄像头啊。
--disable-gnomevfs \
--disable-dvdread \
--disable-dvdnav \
--disable-bluray \ 不支持蓝光。
--disable-linsys \
--disable-decklink \
--disable-libva \
--disable-dv1394 \
--disable-mod \
--disable-sid \
--disable-gme \
--disable-tremor \
--disable-mad \
--disable-dca \
--disable-sdl-image \
--disable-zvbi \
--disable-fluidsynth \
--disable-jack \
--disable-pulse \
--disable-alsa \
--disable-samplerate \
--disable-sdl \
--disable-xcb \
--disable-atmo \
--disable-qt \
--disable-skins2 \
--disable-mtp \
--disable-notify \
--enable-libass \
--disable-svg \
--disable-sqlite \
--disable-udev \
--enable-libxml2 \
--disable-caca \
--disable-glx \
--disable-egl \
--disable-goom \
--disable-projectm \
--disable-sout \ 这是啥?
--disable-vorbis \
--disable-faad \
--disable-x264 \
--disable-schroedinger --disable-dirac \
$*