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

交叉編譯動態庫

發布時間: 2023-05-07 05:30:06

① 用arm-linux交叉編譯器使用動態庫時搜索標准路徑是什麼

/usr/lib , /橘源usr/libxx xx為數字,一般32或64,x32
標准頭好伍畢文友芹件搜索路徑:/usr/include/

② arm-linux-gcc交叉編譯是靜態編譯還是動態的

動態的,你在後面加-static就是靜態的

③ 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

④ 如何交叉編譯 動態庫

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

⑤ Ubuntu下使用mingw-w64交叉編譯ffmpeg

網上大部分編譯windows版ffmpeg的教程都是基於msys+mingw的,完全運行在windows上。由於msys2的性能實在是太糟糕了,編譯速度太感人,因此決定研究Linux下使用mingw-w64交叉編譯

先是安裝ubuntu版的mingw-w64
sudo apt install mingw-w64

然後在configure ffmpeg的時候,在正常的配置項之後加上。
--arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32-

上面是32位庫編譯的配置,64位的如下
--arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32-

而且最好使用動態庫,靜態庫還需要鏈接一大堆mingw的庫實現,而且還可能鏈接失敗。但這樣編譯出來的動態庫,還需要依賴 libgcc_s_sjlj-1.dll。如果要移除這個依賴,configure的時候還要加上 --extra-ldflags='-static-libgcc'

⑥ linux mount windows共享目錄 交叉編譯安卓動態庫傳輸錯誤

那就是軟體問題了

熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:535
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:32
linux485 發布:2025-07-05 14:38:28 瀏覽:310
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:760
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:437
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:734
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:249
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:696
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:288
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:838