lxml庫的交叉編譯

總有很多原因夭坪,需要在非x86平臺下跑python。

python 交叉編譯

python的交叉編譯網(wǎng)上有不少帖子过椎,講的都很好室梅,這里就不在多說,放兩個鏈接
http://ljgabc.github.io/2015/04/24/2015-04-24-%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91Python-3-4-2/
http://xiaoxia.org/2013/09/13/python-on-tomato/

lxml的交叉編譯

lxml這類第三方庫疚宇,底層采用了C語言寫擴展亡鼠。如果需要lxml在非X86平臺上正確運行,那就需要將C語言擴展(xxx.so)編譯成對應平臺的二進制文件敷待。
一般來說间涵,直接在對應平臺上編譯安裝即可。But榜揖,如果對應平臺上內(nèi)存太小勾哩、處理器太慢、空間太少或者說根本沒有編譯器.....(其實就是說的嵌入式)
好吧举哟,還是安心的交叉編譯lxml吧

依賴庫

lxml 依賴于 libxml2 思劳、libxslt
首先把它兩給編譯了,安裝一個指定路徑MYPREFIX
腳本里的MY[xxx] 請指定對應的交叉編譯工具

lxml

./configure \
    --host=\
    --build=x86_64 \
    --prefix=${MYPREFIX} \
    --enable-shared=no \
    --without-python \
    LDFLAGS="-L${MYPREFIX}/lib" \
    CFLAGS="-fPIC" \
    CC=${MYCC} \
    CXX=${MYCXX} \
    STRIP=${MYSTRIP} \
    AR=${MYAR} \
    RANLIB=${MYRANLIB} \
    READELF=${MYREADELF} 


make -j && make install

libxslt

./configure \
    --host=mips64-linux \
    --build=x86_64 \
    --prefix=${MYPREFIX} \
    --enable-shared=no \
    --disable-shared --with-libxml-prefix="${MYPREFIX}" --without-debug  --without-python --without-crypto\
    LDFLAGS="-L${MYPREFIX}/lib" \
    CFLAGS="-fPIC" \
    CC=${MYCC} \
    CXX=${MYCXX} \
    STRIP=${MYSTRIP} \
    AR=${MYAR} \
    RANLIB=${MYRANLIB} \
    READELF=${MYREADELF} 

make -j && make install

lxml 交叉編譯

還是先上腳本

      CC=${MYCC} \
      LINKCC=${MYCC}  \
      BLDSHARED="${MYCC} --shared -fPIC" \
      LDSHARED="${MYCC} --shared -fPIC" \
      LDFLAGS='  -Wl,-rpath,${MYPREFIX} -L${MYPREFIX}/lib -Wl,--gc-sections   -llzma' \
/usr/local/bin/python3 setup.py build_ext -lrt --include-dirs=${MYPREFIX_PYTHON}//include \
      --library-dirs=${MYPREFIX_PYTHON}/lib --force build \ 
      --force build_scripts  --executable=${MYPREFIX_PYTHON}/python  \
      --force bdist_egg --dist-dir  ${DESTDIR}  \
      --with-xslt-config=${MYPREFIX}/bin/xslt-config

/usr/local/bin/python3 是host python妨猩,必須和target python的版本一致 敢艰,要不出了事不負責
${MYPREFIX_PYTHON} 是target python 編譯安裝的根目錄
${DESTDIR} 編譯的結果文件生成路徑
LDFLAGS CC :一般交叉編譯都會指定的編譯工具或選項

大約就是這樣了
在深入了解下

python 不懂交叉編譯

為什么要指定 LINKCC BLDSHARED LDSHARED ,這是啥册赛?
這三個變量來自于 host python的 /usr/local/lib/python3.6/_sysconfigdata_m_XXXXXXXXX.py
在編譯 build_ext 的時候钠导,python的主要工具類是 Extension (from distutils.core import setup, Extension) ,這個類可以配置ext們的include/src/宏定義/等等一系列東西森瘪,它使用你配置的CC BLDSHARED等變量覆蓋_sysconfigdata.py里的內(nèi)容牡属,然后進行編譯

LINKCC BLDSHARED LDSHARED 這三個變量會指定鏈接,動態(tài)庫鏈接時使用的編譯器默認全都是 gcc ................................ :<
所以在編譯lxml時只指定CC是沒用的,因為 LDSHARED 還會被使用

推廣一下扼睬, 以后第三方庫交叉編譯時可能還需要手動指定 _sysconfigdata.py 中的其他變量

GGGL

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逮栅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子窗宇,更是在濱河造成了極大的恐慌措伐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件军俊,死亡現(xiàn)場離奇詭異侥加,居然都是意外死亡,警方通過查閱死者的電腦和手機粪躬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門担败,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昔穴,“玉大人,你說我怎么就攤上這事提前÷鸹酰” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵狈网,是天一觀的道長宙搬。 經(jīng)常有香客問我,道長拓哺,這世上最難降的妖魔是什么勇垛? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拓售,結果婚禮上,老公的妹妹穿的比我還像新娘镶奉。我一直安慰自己础淤,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布哨苛。 她就那樣靜靜地躺著鸽凶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪建峭。 梳的紋絲不亂的頭發(fā)上玻侥,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音亿蒸,去河邊找鬼凑兰。 笑死,一個胖子當著我的面吹牛边锁,可吹牛的內(nèi)容都是我干的姑食。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茅坛,長吁一口氣:“原來是場噩夢啊……” “哼音半!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起贡蓖,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤曹鸠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后斥铺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彻桃,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年晾蜘,在試婚紗的時候發(fā)現(xiàn)自己被綠了叛薯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浑吟。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖耗溜,靈堂內(nèi)的尸體忽然破棺而出组力,到底是詐尸還是另有隱情,我是刑警寧澤抖拴,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布燎字,位于F島的核電站,受9級特大地震影響阿宅,放射性物質(zhì)發(fā)生泄漏候衍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一洒放、第九天 我趴在偏房一處隱蔽的房頂上張望蛉鹿。 院中可真熱鬧,春花似錦往湿、人聲如沸妖异。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽他膳。三九已至,卻和暖如春绒窑,著一層夾襖步出監(jiān)牢的瞬間棕孙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工些膨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蟀俊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓订雾,卻偏偏與公主長得像欧漱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子葬燎,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 詩曰: 大難不死福何在误甚?宰相誤國禍已埋。 改頭換面非易事谱净,鯉躍龍門考驗來窑邦! 話說這蘇華坐起身來,突然覺得渾身又濕又...
    廖坦坦閱讀 225評論 3 6
  • 【每日一談心】:QQ壕探,咱倆談心呀冈钦。 QQ說:好呀,媽媽我給你講個故事吧李请。 好啊瞧筛,我的QQ會講故事啦太棒了 QQ說:...
    674e09b5464a閱讀 202評論 0 0
  • 今日開心播種厉熟,他日定有收成!無比感恩實修群老師和同學的帶領较幌、督導和激勵揍瑟!每晚都無比喜悅地為自己播種的好種子澆水施肥...
    如意寶閱讀 245評論 0 0
  • 20170923,第四周周六。 8:30-10:50數(shù)學一對一乍炉。 買買買绢片。昨天回家就在...
    記得祝福閱讀 194評論 2 3
  • 當你讀到一篇好詩文,看到一片好風景時岛琼,你迫不及待地想告訴他:這真好呀底循! 當遇到喜事,他與你同喜槐瑞,你的歡喜就增加八分...
    牧羊人的天空閱讀 235評論 2 2