CPPFLAGS="-I/usr/wince/include -D_WIN32_WCE=0x0500"
LDFLAGS="-L/usr/wince/lib"
./configure
--host=arm-mingw32ce 指定軟件運行的系統平臺;host就是你編譯好的程序可以運行的平臺
--target-os=mingw32ce 指定軟件面向(target to)的系統平臺.這主要在程式語言工具如編譯器和匯編器上下文中起作用.假如沒指定,將使用’--host’選項的值;挺
target就是你編譯的程序可以處理的平臺;
–build=BUILD 指定軟件包安裝的系統平臺;build就是你正在使用的機器
--arch=arm
指定軟件運行的系統平臺
--enable-cross-compile --cross-prefix=/cygdrive/d/cegcc/mingw32ce/bin/(注意這里可能需要改成你的目錄)arm- mingw32ce-
--prefix=/ffmpeg4wince
build就是你正在使用的機器,host就是你編譯好的程序可以運行的平臺,target就是你編譯的程序可以處理的平臺.這個build和host比較好理解,但是target就不好辦了,到底什么意思呢?一般來說,我們平時所說的交差編譯用不到他target的,比如./configure --build=i386-linux,--host=arm-linux就可以了,在386的平臺上編譯可以運行在arm板的程序.但是,一般我們都是編譯程序,而不是編譯工具,如果我們編譯工具,比如gcc,這個target就有用了.如果我們需要在一個我們的機器上為arm開發板編譯一個可以處理 mips程序的gcc,那么target就是mips了.
在gcc編譯中我們使用
./configure
--build=編譯平臺 --host=運行平臺 --target=目標平臺
那么在這組配置參數中:
--build: 表示目前我們正在運行的平臺名稱是什么,如果當前我們是在intel的pentium機器中編譯該系統,那么我們的--build就可能
是i686-pc-linux-gnu
--host:表示我們把這個編譯好的gcc在什么樣的平臺下運行,在交叉編譯過程中這個需要我們來指定,因為機器自己是不能知道我們心里是怎么想的,
那么我們可以明確的告訴它,我們要做出來的程序是運行在“龍芯”上的,但是目前還不能直接指定“龍芯”,因此我們這里指定為mips64el-unknown-linux-gnu
-host也可以不指定,那么host將自動使用build來定義自己,不過那將不再是交叉編譯。--host:指定目標機的平臺類型。一般格式為CPU類型-操作系統名稱。比如,目標機的CPU為arm,操作系統為linux,可以這樣寫--host=arm-linux。
build和host相同時表示本地編譯,若不相同則表示交叉編譯。
交叉編譯的概念
先解釋兩個概念:主機:運行編譯過程的計算機。目標機:運行編譯結果(可執行文件)的計算機。一般情況下,主機和目標機是同一類型的計算機,這就是正常的編譯,沒有什么好說的。所謂交叉編譯就是在主機上為目標機編譯,比如在PC上編譯,然后在手機上運行,這種編譯就叫交叉編譯。交叉編譯需要交叉編譯器,不同的目標機(主要是看芯片類型)需要不同的交叉編譯器,比如我們這里要介紹的arm-linux交叉編譯,所用的交叉編譯器就是arm-linux-gcc系列
--prefix:編譯結果放置的位置。默認值是/usr或者/usr/local,交叉編譯時不能使用默認值,否則它會覆蓋你本機的文件,所以要指定一個路徑。
CPPFLAGS:C/C++預處理器命令行參數
LDFLAGS:linker flags
CC :C編譯器命令
CFLAGS : C編譯器命令行參數
./configure -help >con11.txt可以將配置選項的幫助寫進con11.txt中