編譯方法其實MDC(Mozilla Develop Center)就寫的很清楚
看完下面這篇可以編出一般版的FX
https://developer.mozilla.org/En/Build_Documentation
https://developer.mozilla.org/en/Building_with_Profile-Guided_Optimization#Introduction
整個看完要編自己PGO的FX 不會有太大問題
考慮到也許有人沒時間看,那就簡略大部分的說明直接進速成班
1.建立編譯環境
ubuntu的情形:
3.新增設定、執行文件
(因為wordpress會把 雙減號 改成單減號,正確的內容請下載回去看)
在『~/』下面新增 run-firefox.sh
CC=gcc
CXX=g++
CPP=cpp
草綠色 是多核心CPU加速編譯使用的,如果是單核心CPU可以不用管
如果是四核心CPU 把前面的#去掉就好,雙核心除了去掉#還要 -j4 改成 -j2
紫色則是gcc 最佳化的程度,-O3 在大部分的使用情形下不會當掉
(如果要更穩定那可以改成 -O2)
橘色則是依據編譯系統的CPU進行最佳化,如果要指定編譯成其他CPU的把native改掉
譬如改成對athlon64最佳化,-march=athlon64 -mtune=athlon64
編譯上若有設定march(譬如athlon64) 卻把編譯出來的用在不同的cpu上(譬如P4)
有可能會出現程式錯誤
避免這個情形 可以只用mtune 而不用march這個參數 (不過最佳化程度會降低一些)
4.下指令進行編譯
.mozconfig 最後一行那個跟run-mozilla.sh 第1行 只是要提醒編譯該下的指令是什麼
切換到FX source code 的目錄,並下指令
因為第一次編譯完後需要進行調校,如果有舊版FX在執行就會出現問題
第一次編譯完後系統會自動跳出一個FX視窗,這個就是調校用的
要做的就是 到處逛網頁 如此而已,要PGO程度好 可以多逛逛技術性較多的網頁
建議逛的是
各javascirpt benchmark 網頁+平常測試速度的網頁+常去網頁+負載重的網頁…
逛完後關閉FX,這時候會自動開始第二次編譯
5.第二次編譯完後,切換到編譯完的目錄 把編完的東西壓縮起來
以我的.mozconfig的設定是
make package是為了去掉這個情形,等壓縮完後在 obj目錄下的dist就會出現
firefox-3.1b3.en-US.linux-i686.tar.bz2 這就是完整 PGO 最佳化的FX
把這個copy出來後,別忘了要清理編完的東西 要不然下次編譯會出現難以預知的問題
之後只要下一次指令 所以PGO編譯起來老實說沒什麼難度
–
附註:CFLAGS參數不要用 -mfpmath 這個參數會讓FX當掉
轉載至:the way to build PGO FX
看完下面這篇可以編出一般版的FX
https://developer.mozilla.org/En/Build_Documentation
但要編PGO版的 需要再看這篇
https://developer.mozilla.org/en/Building_with_Profile-Guided_Optimization#Introduction
整個看完要編自己PGO的FX 不會有太大問題
考慮到也許有人沒時間看,那就簡略大部分的說明直接進速成班
1.建立編譯環境
ubuntu的情形:
sudo apt-get build-dep firefox
2.下載FX 的source code 解壓縮到 『~/』下面3.新增設定、執行文件
(因為wordpress會把 雙減號 改成單減號,正確的內容請下載回去看)
在『~/』下面新增 run-firefox.sh
#!/bin/sh make -f client.mk profiledbuild
export NO_EM_RESTART=1
mkdir $OBJDIR/_profileprofile
$OBJDIR/dist/bin/firefox -no-remote -profile $OBJDIR/_profileprofile
在『~/』下面新增 .mozconfig (注意下載回來的檔案要加上 .)export NO_EM_RESTART=1
mkdir $OBJDIR/_profileprofile
$OBJDIR/dist/bin/firefox -no-remote -profile $OBJDIR/_profileprofile
. $topsrcdir/browser/config/mozconfig
CC=gcc-4.3
CXX=g++-4.3
CPP=cpp-4.3
#mk_add_options MOZ_MAKE_FLAGS=-j4
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
ac_add_options –disable-tests –disable-crashreporter –disable-debug –disable-tests –disable-javaxpcom –disable-updater
ac_add_options –enable-application=browser –enable-libxul –enable-jemalloc
ac_add_options –enable-optimize=”-O3 -fforce-addr -march=native -mtune=native -pipe -fomit-frame-pointer”
ac_add_options –enable-profile-guided-optimization
mk_add_options PROFILE_GEN_SCRIPT=”sh /home/orange/run-firefox.sh”
#make -f client.mk profiledbuild
藍色指定要用哪個gcc版本進行編譯,如果不需要特別指定就CC=gcc-4.3
CXX=g++-4.3
CPP=cpp-4.3
#mk_add_options MOZ_MAKE_FLAGS=-j4
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
ac_add_options –disable-tests –disable-crashreporter –disable-debug –disable-tests –disable-javaxpcom –disable-updater
ac_add_options –enable-application=browser –enable-libxul –enable-jemalloc
ac_add_options –enable-optimize=”-O3 -fforce-addr -march=native -mtune=native -pipe -fomit-frame-pointer”
ac_add_options –enable-profile-guided-optimization
mk_add_options PROFILE_GEN_SCRIPT=”sh /home/orange/run-firefox.sh”
#make -f client.mk profiledbuild
CC=gcc
CXX=g++
CPP=cpp
草綠色 是多核心CPU加速編譯使用的,如果是單核心CPU可以不用管
如果是四核心CPU 把前面的#去掉就好,雙核心除了去掉#還要 -j4 改成 -j2
紫色則是gcc 最佳化的程度,-O3 在大部分的使用情形下不會當掉
(如果要更穩定那可以改成 -O2)
橘色則是依據編譯系統的CPU進行最佳化,如果要指定編譯成其他CPU的把native改掉
譬如改成對athlon64最佳化,-march=athlon64 -mtune=athlon64
編譯上若有設定march(譬如athlon64) 卻把編譯出來的用在不同的cpu上(譬如P4)
有可能會出現程式錯誤
避免這個情形 可以只用mtune 而不用march這個參數 (不過最佳化程度會降低一些)
4.下指令進行編譯
.mozconfig 最後一行那個跟run-mozilla.sh 第1行 只是要提醒編譯該下的指令是什麼
切換到FX source code 的目錄,並下指令
cd ~/mozilla-1.9.1
make -f client.mk profiledbuild
接下來就是漫長的等待時間,在第一次編譯完之前能不用FX就不要用make -f client.mk profiledbuild
因為第一次編譯完後需要進行調校,如果有舊版FX在執行就會出現問題
第一次編譯完後系統會自動跳出一個FX視窗,這個就是調校用的
要做的就是 到處逛網頁 如此而已,要PGO程度好 可以多逛逛技術性較多的網頁
建議逛的是
各javascirpt benchmark 網頁+平常測試速度的網頁+常去網頁+負載重的網頁…
逛完後關閉FX,這時候會自動開始第二次編譯
5.第二次編譯完後,切換到編譯完的目錄 把編完的東西壓縮起來
以我的.mozconfig的設定是
cd ~/mozilla-1.9.1/obj-i686-pc-linux-gnu
make package
這個過程不能省略是因為dist裡的東西多是用 link 連結make package
make package是為了去掉這個情形,等壓縮完後在 obj目錄下的dist就會出現
firefox-3.1b3.en-US.linux-i686.tar.bz2 這就是完整 PGO 最佳化的FX
把這個copy出來後,別忘了要清理編完的東西 要不然下次編譯會出現難以預知的問題
cd ~/mozilla-1.9.1/obj-i686-pc-linux-gnu
make distclean
編譯部份大概就這樣 看起來雖然落落長,但只要run-firefox.sh、.mozconfig 搞定後make distclean
之後只要下一次指令 所以PGO編譯起來老實說沒什麼難度
–
附註:CFLAGS參數不要用 -mfpmath 這個參數會讓FX當掉
轉載至:the way to build PGO FX
沒有留言:
張貼留言