當前位置:首頁 » 編程軟體 » 交叉編譯庫

交叉編譯庫

發布時間: 2023-04-28 02:16:34

⑴ lxml庫的交叉編譯

總有很多原因,需要在非x86平台下跑python

python的交叉編譯網上有不少帖子,講的都很好,這里就不在多說,放兩個鏈接
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這類第三方庫,底層採用了C語言寫擴展。如果需要lxml在非侍虛纖X86平台上正確運行,那就需要將C語言擴展(xxx.so)編譯成對應平台的二進制文件。
一般來說,直接在對應平台上編譯安裝老仿即可。But,如果對應平台上內存太小、處理器太慢、空間太少或者說根本沒有譽激編譯器.....(其實就是說的嵌入式)
好吧,還是安心的交叉編譯lxml吧

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

lxml

libxslt

還是先上腳本

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

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

為什麼要指定 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里的內容,然後進行編譯

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

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

GGGL

⑵ 如何交叉編譯開源庫

所謂的搭建交叉編譯環境,即安裝、配置交叉編譯工具鏈。在該環境下編譯出嵌入式linux系統所需的操作系統、應用程序等,然後再上傳到目標機上。
交叉編譯工具鏈是為了編譯、鏈接、處理和調試跨平台體系結構的程序代碼。對於交叉開發的工具鏈來說,在文件名稱上加了一個前綴,用來區別本地的工具鏈。例如,arm-linux-表示是對arm的交叉編譯工具鏈;arm-linux-gcc表示是使用gcc的編譯器。除了體系結構相關的編譯選項以外,其使用方法與Linux主機上的gcc相同,所以Linux編程技術對於嵌入式同樣適用。不過,並不是任何一個版本拿來都能用,各種軟體包往往存在版本匹配問題。例如,編譯內核時需要使用arm-linux-gcc-4.3.3版本的交叉編譯工具鏈,而使用arm-linux-gcc-3.4.1的交叉編譯工具鏈,則會導致編譯失敗。
那麼gcc和arm-linux-gcc的區別是什麼呢?區別就是gcc是linux下的C語言編譯器,編譯出來的程序在本地執行,而arm-linux-gcc用來在linux下跨平台的C語言編譯器,編譯出來的程序在目標機(如ARM平台)上執行,嵌入式開發應使用嵌入式交叉編譯工具鏈。

工具/原料
電腦系統:win7系統。虛擬機系統:workstation6.5 。虛擬機安裝的linux版本:fedora9.0。內核:linux2.6.25 。
方法/步驟
1
我使用的交叉編譯工具鏈是arm-linux-gcc-4.4.3,把它放在linux系統的路徑是圖一

2
在linux系統的路徑/home/song/share下放了交叉編譯工具鏈arm-linux-gcc-4.4.3的壓縮包,另一個版本的不用。有的人可能會問到怎麼把這個壓縮包弄到虛擬機的linux的系統的,我是通過samba服務從主機復制到虛擬機的,這里的share文件夾就是我samba伺服器的工作目錄,多了不說,這不是重點。
然後通過命令mkdir embedded 建立一個arm-linux-gcc的安裝目錄,如圖二所示。當然安裝路徑和目錄名稱「embedded」可以依自己的喜好而定。
步驟閱讀
然後通過命令將share文件夾下的arm-linux-gcc-4.4.3.tar.gz復制到這里的embedded文件夾下, 當然這里你也可以不進行這一步我這是為了方便以後管理,將arm-linux-gcc安裝到embedded文件夾下,方便以後尋找。

然後使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz將embedded文件夾下的arm-linux-gcc-4.4.3.tar.gz解壓縮安裝到當前目錄下

執行完解壓縮命令,就已經將交叉編譯工具鏈arm-linux-gcc-4.4.3安裝到linux系統上了,這里默認安裝到了圖六所示的路徑上。

接下來配置系統環境變數,把交叉編譯工具鏈的路徑添加到環境變數PATH中去,這樣就可以在任何目錄下使用這些工具。 vi /etc/profile 編輯profile文件,添加環境變數。

在profile中的位置處,添加圖八所示的紅線標注的一行,路徑就是圖六中的紅線標注的路徑後面加上/4.4.3/bin。

圖八中的路徑一定是你自己的安裝路徑,可以使用pwd命令查找一下那個bin目錄的路徑。添加完路徑後,保存退出。接下來使用命令:source /etc/profile,是修改後的profile文件生效,如圖九所示。

然後,使用命令:arm-linux-gcc -v查看當前交叉編譯鏈工具的版本信息,如圖九中的紅線標注第③行所示。很明顯 可以看到,如果不執行第②步,則查看版本信息不成功。
然後驗證交叉編譯工具鏈是否安裝成功並且可以使用,如圖九所示,隨便找一個目錄編輯一個hello源代碼。

編輯好hello.c文件後,保存退出。然後使用交叉編譯器對hello.c進行編譯,並生成可執行文件hello

這里生成的hello文件並不能像gcc編譯出來的文件那樣直接使用「./hello」命令執行並顯示內容 因為它是一個二進制文件,只能下載到開發板上執行!

至此,搭建交叉編譯環境步驟結束。

⑶ 交叉編譯後的python 怎麼使用第三方庫

剛遇到一樣的問題,解決之後順手回答下你。
setup.py無法安裝是因為卡在build這一步,嵌入式linux系統里為減少體積去除了kernel 頭文件之類的,所以理論上補全後可以直接在系統里setup.py安裝,但是這種方法並不適合嵌入式linux系統。
我的解決方法是在編譯根文件系統的時候順便把需要的第三方庫集成進去。buildroot 2015.05版已經有python-package框架可用,更早版本的話可以自己按照安裝步驟寫.mk來集成。也 可以在buildroot里交叉編譯好這個第三方庫,然後拷到文件系統里。

⑷ QT交叉編譯時怎麼添加靜態庫,急!!!

INCPATH = -I../EmbedSky/qt-4.5/__install/arm/mkspecs/default -I. -I../EmbedSky/qt-4.5/__install/arm/include/QtCore -I../EmbedSky/qt-4.5/__install/arm/include/QtNetwork -I../EmbedSky/qt-4.5/__install/arm/include/QtGui -I../EmbedSky/qt-4.5/__install/arm/include -I. -I. -I.
在這里增加你編譯的靜態庫。。。可以試試,我也是新手

⑸ 如何交叉編譯 動態庫

首先,你要保證你編譯的程序使用的交叉編譯鏈是開發板支持的,例如arm-linux-4.3.2,一般是在虛擬機下面的linux系統下的/etc/profile裡面添加編譯鏈路徑;接著,需要確保使用的內核是開發板目前使用的內核,一般MINI2440是使用linux-2.6.30版本的,這個要在程序的makefile文件裡面改;還有,如果你使用靜態編譯方式文件會比較大,但是不用依賴庫,如果是用動態編譯,文件就比較小,但是依賴動態庫,如果放到開發板上運行提示缺少動態庫,就證明你沒有把動態庫放進開發板的/lib裡面,可以用ldd指令查看需要哪些庫;最後,記住移植的方式可以使用NFS或者TFTP,U盤也可以,放到開發板上後必須在文件存放的當前目錄下./可執行文件,或者把文件放入/bin或者/sbin下面,就可以直接可執行文件,不用加./你可以在程序裡面加些調試信息輸出,例如printf,以此證明有執行。

⑹ 如何交叉編譯開源庫

{
查看目錄下面的README,INSTALL這些文檔,看怎麼去build。
./buildconf
./configure --host=x86_64-pokysdk-linux --target=arm-poky-linux-gnueabi --prefix=/root/work/lib_arm/c-ares

make有時候可以手動指定CC,AR,LD等編譯選項,但是要根據組件的Makefile和config文件是否用到,名字是不是這個,不能隨意猜測
make CC="arm-poky-linux-gnueabi-gcc" AR="arm-poky-linux-gnueabi-ar r" RANLIB="arm-poky-linux-gnueabi-ranlib"
make CC="arm-poky-linux-gnueabi-gcc" AR="arm-poky-linux-gnueabi-ar r" RANLIB="arm-poky-linux-gnueabi-ranlib" install

有可能需要配置下某些編譯選項以使得編譯器配置和組件代碼的要求相匹配
export CFLAGS="-mfloat-abi=hard -g0 -O2 -Wno-system-headers "

⑺ 交叉編譯libnpg庫 ./configure CC=mipsisa32-elf-gcc --host=mipsisa32-linux 求大神給予幫助

編譯安裝。關鍵要看configure後,屏幕上出現的那一堆內容的最末尾有沒有error:
沒有就可以進行下一步。至於其他的,例如warning,可以忽略。
make和make install也是一樣

⑻ OpenCV交叉編譯時用到的幾個依賴庫

OpenCV交叉編譯時用到的幾個依賴庫。在BB Black 入門基礎之OpenCV的交叉編譯 一文中用到。大家有需要的可以拿去用。
↑收起

文件列表
.deps
----|ControlResource.Po
----|DCU99Editor.Po
----|DuplexEditor.Po
.eclipseme.tmp
----|emulation
----|----|PhoneBook.jad
----|----|PhoneBook.jar
verified
----|classes
----|----|com
----|----|----|north
----|----|----|----|phonebook
----|----|----|----|----|model
----|----|----|----|----|----|Account.class
----|----|----|----|----|----|ApplicationException.class
----|----|----|----|----|----|Index.class
----|----|----|----|----|----|Model$AccountFilter.class
----|----|----|----|----|----|Model$IndexFilter.class
----|----|----|----|----|----|Model.class
----|----|----|----|----|----|Preference.class
----|----|----|----|----|----|UserModel.class
ui
----|ConfirmationDialog.class
----|DetailInfoUI.class
----|Dialog.class
----|DialogListener.class
----|IndexFunctionUI$ListIndex.class
----|IndexFunctionUI.class
----|ListMerchantGroupUI.class
----|ListPhoneUI.class
----|LoginUI.class
----|MerchantGroupDetailInfoUI.class
----|NewPhoneUI.class
----|SearchPhoneUI.class
----|Title.class
----|UIController$1.class
----|UIController$EventID.class
----|UIController.class
----|WaitCanvas$1.class
----|WaitCanvas.class
----|WelcomeUI.class
PhoneBookMIDlet.class
.myeclipse
----|CVS
----|----|Repository
----|----|Root
.settings
----|CVS
----|----|Entries
----|----|Repository
----|----|Root
org.eclipse.core.resources.prefs
.svn
----|prop-base
props
text-base
----|readme.txt.svn-base
tmp
----|prop-base
props
text-base
all-wcprops
dir-prop-base
entries
format
.tmp_versions
----|dw4002.mod
dependence
----|ffmpeg-0.10.3.tar.bz2
----|jpegsrc.v8d.tar.gz
----|libpng-1.5.14.tar.gz
----|libv4l-0.6.1.gz
----|tiff-4.0.3.tar.gz
----|x264-snapshot-20120528-2245-stable.tar.bz2
----|xvidcore-1.3.2.tar.gz
----|zlib127.zip
..dir.dat
._CotEditor_346
._PortVaR
.classpath
.cproject
.cxl
.depend
.dw4002.ko.cmd
.dw4002.mod.o.cmd
.dw4002.o.cmd
.exe
.gitignore
.htaccess
.message
.pdf
.project
.qmake.internal.cache
.screenrc
.synopsys_dc.setup
.synopsys_pt.setup
.untf
.vimrc
.xhdl3.xref

⑼ 如何交叉編譯開源庫

你有沒有先注意到
1、你在./configure 的時候有沒有給它添加上這個庫看因為很可能你知道有這個庫,但是./configure它自己不知道,你要在這個命令後面試著告訴./configure 你的庫的位置,可以考慮用-L/YOU_LIB_DIR or -ILIB_NAME。

2、也有可能是你這個庫沒有PPC版本的,如果是這樣的話,你要找到這個庫的源代碼,然後把它交叉編譯,再導入這個zebra。

good luck!

熱點內容
如何配置一台長久耐用的電腦 發布:2025-07-12 11:43:03 瀏覽:601
昆明桃源碼頭 發布:2025-07-12 11:38:45 瀏覽:568
大司馬腳本掛機 發布:2025-07-12 11:38:35 瀏覽:458
資料庫實時監控 發布:2025-07-12 11:31:33 瀏覽:743
vb6反編譯精靈 發布:2025-07-12 11:23:12 瀏覽:997
模擬存儲示波器 發布:2025-07-12 11:10:58 瀏覽:814
怎麼查看安卓真實運行內存 發布:2025-07-12 11:08:39 瀏覽:883
鏈接直接訪問 發布:2025-07-12 11:03:37 瀏覽:950
安卓如何把備忘錄轉為文檔 發布:2025-07-12 10:48:15 瀏覽:702
無法連接ftp主機 發布:2025-07-12 10:47:33 瀏覽:345