Mac下交叉編譯protobuffer版本庫(C++版)

.前言

? ? ? ?這幾天和開發(fā)jni的同學(xué)對接SDK臼隔,其中包含了protobuffer和openssl庫祈噪,這里主要說一下protobuffer編譯mac環(huán)境靜態(tài)庫過程及遇到的問題,在此記錄下來供后續(xù)參考眷射,由于對linux及英文不是很熟焚廊,過程中也感謝生才同學(xué)的協(xié)助知允!

當(dāng)拿到j(luò)ni的時候闯捎,處理了header search path路徑問題后,又出現(xiàn)了另一個報錯许溅,一臉懵逼瓤鼻!

其實(shí)是由于libprotobuf-lite.a靜態(tài)庫不符合我們當(dāng)下的arm64 ?arm64e ?x86_64 ?armv7 等環(huán)境,所以需要重新編譯一個符合mac系統(tǒng)環(huán)境下的靜態(tài)庫贤重。

其實(shí)在我們開發(fā)過程中也可以用命令來校驗(yàn)當(dāng)前庫的符合的環(huán)境茬祷,

格式是:lipo -info 要檢驗(yàn)的庫路徑

例:lipo -info /Users/zhaoyonghong/Desktop/openssl/lib/libssl.a

執(zhí)行結(jié)果如下:

(如果不符合的話,會提示沒有找到對應(yīng)編譯環(huán)境并蝗,這時候就需要重新編譯庫了)

(如果符合祭犯,會將對應(yīng)的環(huán)境顯示出來)

.具體步驟

官方鏈接(需要翻墻):https://developers.google.com/cardboard/develop/ios/protobuf

首先選擇對應(yīng)版本下載protobuffer源碼,我們用的是 protobuf-3.6.1滚停,mac下安裝C++版本的博客網(wǎng)上極少存在沃粗,有的也真的沒有一個合適。下面列出過程中需要用到的命令:

1.檢查是否安裝

?protoc --version

2.clone源碼

git clone?https://github.com/protocolbuffers/protobuf.git

3.下載你想要的版本

git checkout v3.10.1

4.下載以后cd到目錄下后執(zhí)行

./autogen.sh

5.創(chuàng)建環(huán)境變量

build_dir=`pwd`/../libprotobuf/ios

darwin=darwin`uname -r`

protoc=`which protoc`

isysroot=`xcrun --sdk iphoneos --show-sdk-path`

cflags="-Wno-unused-local-typedef -Wno-unused-function -DNDEBUG -g -O0 -pipe -fPIC -fcxx-exceptions"

cxxflags="$cflags -std=c++11 -stdlib=libc++"

6.創(chuàng)建輸出目錄

mkdir -p $build_dir/arch

mkdir -p $build_dir/lib

7.配置64位生成環(huán)境

./configure \

--build=x86_64-apple-$darwin?\

--host=arm \

--with-protoc=$protoc?\

--disable-shared \

--prefix=$build_dir?\

--exec-prefix=$build_dir/arch/arm64 \

"CC=clang"?\

"CFLAGS=$cflags?-miphoneos-version-min=8.0 -arch arm64 -isysroot?$isysroot"?\

"CXX=clang"?\

"CXXFLAGS=$cxxflags?-miphoneos-version-min=8.0 -arch arm64 -isysroot?$isysroot"?\

LDFLAGS="-arch arm64 -miphoneos-version-min=8.0 -stdlib=libc++"?\

"LIBS=-lc++ -lc++abi"

8.構(gòu)建64位庫

make?-j8

make?install

9.清除協(xié)議緩沖區(qū)目錄

make distclean

10.配置32位庫生成環(huán)境

./configure \

--build=x86_64-apple-$darwin?\

--host=armv7-apple-$darwin?\

--with-protoc=$protoc?\

--disable-shared \

--prefix=$build_dir?\

--exec-prefix=$build_dir/arch/armv7 \

"CC=clang"?\

"CFLAGS=$cflags?-miphoneos-version-min=8.0 -arch armv7 -isysroot?$isysroot"?\

"CXX=clang"?\

"CXXFLAGS=$cxxflags?-miphoneos-version-min=8.0 -arch armv7 -isysroot?$isysroot"?\

LDFLAGS="-arch armv7 -miphoneos-version-min=8.0 -stdlib=libc++"?\

"LIBS=-lc++ -lc++abi"

11.構(gòu)建32位庫

make?-j8

make?install

12.編譯對應(yīng)兩個文件a

lipo \

$build_dir/arch/arm64/lib/libprotobuf-lite.a \

$build_dir/arch/armv7/lib/libprotobuf-lite.a \

-create \

-output $build_dir/lib/libprotobuf-lite.a

13.刪除未使用的庫

rm -rf $build_dir/arch

14.到此靜態(tài)庫生成完畢键畴,在protobuf中包含兩個文件最盅,分別是include和lib,導(dǎo)入到自己的工程就可以愉快的擼代碼了

proto

├── cardboard_device.pb.cc

├── cardboard_device.pb.h

└── libprotobuf

? ? └── ios

├──?include

? ? ? ? │ ? └── google/*

? ? ? ? └── lib

? ? ? ? ? ? └── libprotobuf-lite.a

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末起惕,一起剝皮案震驚了整個濱河市涡贱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惹想,老刑警劉巖问词,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嘀粱,居然都是意外死亡激挪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門草穆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灌灾,“玉大人,你說我怎么就攤上這事悲柱》嫦玻” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嘿般。 經(jīng)常有香客問我段标,道長,這世上最難降的妖魔是什么炉奴? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任逼庞,我火速辦了婚禮,結(jié)果婚禮上瞻赶,老公的妹妹穿的比我還像新娘赛糟。我一直安慰自己,他們只是感情好砸逊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布璧南。 她就那樣靜靜地躺著,像睡著了一般师逸。 火紅的嫁衣襯著肌膚如雪司倚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天篓像,我揣著相機(jī)與錄音动知,去河邊找鬼。 笑死员辩,一個胖子當(dāng)著我的面吹牛盒粮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屈暗,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拆讯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了养叛?” 一聲冷哼從身側(cè)響起种呐,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弃甥,沒想到半個月后爽室,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淆攻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年阔墩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓶珊。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡啸箫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伞芹,到底是詐尸還是另有隱情忘苛,我是刑警寧澤蝉娜,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站扎唾,受9級特大地震影響召川,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胸遇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一荧呐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纸镊,春花似錦倍阐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至庵楷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間楣颠,已是汗流浹背尽纽。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留童漩,地道東北人弄贿。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像矫膨,于是被迫代替她去往敵國和親差凹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355