不少同窗都在嘗試編譯 android 版本的 vlc時候發現不少編譯問題,通常都編譯好幾回都沒有編譯經過。我在這裏將我在比較經常使用的兩個發行平臺上編譯過程當中出現的問題說明記錄一下:linux
先閱讀一下官方給定的教程: https://wiki.videolan.org/AndroidCompile/ ,按照教程中的內容配置環境變量NDK包。注意到目前我寫此文章的時間官方支持的 ndk 的版本是 NDKr4b 因此下載ndk的使用請使用該版本進行下載。android
因爲官方文檔推薦的是 ubuntu 系統進行講解說明的。可是對於我這種比較喜歡 fedora 和 opensuse rpm 安裝包的同窗來講確實存在問題了,因此我這邊將在 fedora 和 opensuse 系統上安裝的過程記錄下來。git
請使用最新的fedora 發行版本,目前個人fedora 系統是 fedora 27,默認你的系統不是剛剛安裝,若是是剛剛按抓給你的請執行ubuntu
dnf update -y 將系統更新一下,而後安裝以下的內容:ide
dnf install -y automake autoconf dnf install -y ant dnf install -y gettext-devel dnf install -y cmake #like debian os install build-essential dnf groupinstall -y "Development Tools" dnf install -y libtool dnf install -y flex dnf install -y patch dnf install -y pkg-config dnf install -y protobuf-compiler dnf install -y ragel dnf install -y subversion dnf install -y unzip dnf install -y git gitk
而後執行 ./compile.sh -l release或者 ./compile.sh 文章中推薦的命令。這樣就會一直安裝完成。flex
我使用的是 opensuse-Tumbleweed 而不是比較穩定的 Leap 版本。 主要是有些軟件例如: gettext 是有版要求的,而Leap 是使用比較老的版本。默認是須要跟行系統到比較新的版本,若是不是請先執行 zypper update -y,重啓而後執行以下的命令按抓相關的軟件:ui
zypper install -y automake autoconf zypper install -y ant zypper install -y gettext-devel zypper install -y cmake #like debian os: apt-get install build-essential #like fedora os: dnf groupinstall -y "Development Tools" zypper install -y --type pattern devel_basis zypper install -y libtool zypper install -y flex zypper install -y patch zypper install -y pkg-config # dnf install -y protobuf-compiler # apt-get install -y protobuf-compiler # replace by follow in opensuse zypper install -y libprotobuf-c-devel libprotobuf-c1 libprotobuf-lite15 protobuf-c protobuf-devel zypper install -y ragel zypper install -y subversion zypper install -y unzip zypper install -y git gitk
在編譯到必定的程度發現會報以下的錯誤:代理
configure: error: Cannot find native C99 compiler: please define BUILDCC.code
該錯誤是沒有發現你的 gcc 編譯器,在 https://www.linuxquestions.org/questions/slackware-14/vlc-complains-that-my-compiler-is-not-native-c99-4175548893/ 上面有對應的解決方案。文章太長我將個人解決方案直接告訴你們吧:
進入 vlc 的目錄下修改 configure 文件的以下內容:教程
test -n "$DESKTOP_FILE_VALIDATE" || DESKTOP_FILE_VALIDATE=":" BUILDCC=/usr/bin/gcc for ac_prog in c11-gcc c11 c99-gcc c99 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_BUILDCC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$BUILDCC"; then ac_cv_prog_BUILDCC="$BUILDCC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_BUILDCC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS
其中開始的 BUILDCC=/usr/bin/gcc 是我添加的,主要是該內容是在執行時是空,因此直接添加對應的內容。
在執行 ./compile.sh 過程當中發現有些下載不了的,這個須要設置代理(所謂的×××)去操做