CEF3在CentOS7.2上編譯、執行
阿新 • • 發佈:2018-12-14
1. 前言
CEF 官方提供了Ubuntu的編譯認證,對於CentOS沒有特別說明。 基於最新的二進位制編譯結果進行編譯整合,測試沒啥問題,特此記錄
1.事先準備
發行版映象YUM源
本次實驗對應的版本:
cef_binary_3.3497.1834.g0a87d5f_linux64.tar(本次實驗對應的Chrome 69版本)
nss-3.39-with-nspr-4.20.tar.gz
2.準備補齊依賴
照例是缺什麼補什麼 除了X11標準的執行和DEVEL庫要安裝 這兩個比較冷門的(當然開發環境下對應的devel也需要)也需要安裝
libXScrnSaver-1.2.2-6.1.el7.x86_64.rpm atk-2.14.0-1.el7.x86_64.rpm
如果有沒列舉到而且導致到時候編譯不過的,可以用repoquery查詢依賴庫
#安裝repoquery
yum install yum-utils
#舉個例子
repoquery --whatprovides libXss.so.1
3.編譯nss和nspr
理論上你拿NSS3.22就可以編譯通過,但實際上有很多JS效果,需要NSS3.26以上才能支撐;版本不足會崩潰。因此推薦下載最新版本編譯安裝
按照官方的說法,你編譯NSS需要準備gyp和ninja,甚為麻煩。這裡給個投機取巧的辦法
先編譯NSPR
cd nspr ./configure --enable-64bit --prefix=/usr make && make install #要覆蓋原有的lib64下的檔案 cd dist/lib cp * /usr/lib64/ cd ..
然後修改 nss/coreconf/Linux.mk,找到這行
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) $(ARCHFLAG) -pipe -ffunction-sections -fdata-sections -DHAVE_STRERROR
改成
OS_CFLAGS = $(DSO_CFLAGS) $(OS_REL_CFLAGS) $(ARCHFLAG) -pipe -ffunction-sections -fdata-sections -DHAVE_STRERROR -I/usr/include/nspr
然後就可以愉快的編譯了
cd nss
make USE_64=1
make USE_64=1 install
# 複製相關編譯結果到系統目錄下,方便部署
cd ..
cd dist/Linux3.10_x86_64_cc_glibc_PTH_64_DBG.OBJ
cd lib
\cp -f * /lib64
cd ..
cd bin
\cp -f * /usr/bin/
cd ..
#由於這裡面搭載的sqlite版本較低,因此要復原sqlite
yum reinstall sqlite
執行環境中,如果不想動系統庫,可以把NSPR和NSS編譯結果中的SO放到執行目錄下。
4.編譯CEF
CEF的完整DEMO工程中,cefclient還需要GTK。 這不是必須的,後續我們會講到SDL2配合CEF做透明效果,因此我們就只需要cefsimple能夠正常執行,就算OK了。
make cefsimple
編譯結果在 tests/cefsimple/Release 目錄下。 將前面提到的NSPR和NSS一起放到該目錄下,即可正常執行。
#!/bin/bash
export LD_LIBRARY_PATH=.
export DISPLAY=0:0
./cefsimple --no-sandbox --url="file:/etc/elink.d/splash/splash.html"
備註:
- 常用引數
-
關閉GPU使用
--disable-gpu --disable-gpu-compositing
-
單程序
--single-process
-
開啟離屏顯示
--transparent-painting-enabled --off-screen-rendering-enabled
-