欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

linux程序移植到android上

序言(廢話):

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)紅河免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

由于本人還是比較偏重于先說明原理在說明實(shí)際操作步驟,要知其然更要知其所以然,如下圖所示:

linux程序移植到android上

傳統(tǒng)的linux系統(tǒng)中的程序基本都依賴于glibc(至于什么是glibc可以百度去),而右邊AOSP(Android Open-Source Project)的程序基本都是依賴于Bionic(由谷歌公司開發(fā)類庫,用來替代glibc)。這就決定了要想移植linux上的程序到android上就必須解決這個(gè)依賴的類庫不同的問題。

一般情況下,有兩種方法。

一個(gè)就是將程序靜態(tài)編譯,將程序中所有需要的庫全部編譯進(jìn)可執(zhí)行文件中。這樣程序在android中運(yùn)行就不需要鏈接任何動(dòng)態(tài)庫了。但是帶來一個(gè)非常大的弊端就是這個(gè)程序會(huì)非常大,資源利用會(huì)非常低下。一個(gè)簡(jiǎn)單的helloWorld!都可以達(dá)到好幾百k!

另一個(gè)就是用ld-llinux.so.3來替代android系統(tǒng)中/system/bin/linker來作為鏈接器進(jìn)行動(dòng)態(tài)鏈接,當(dāng)然這就需要將相應(yīng)的動(dòng)態(tài)庫也拷貝到android中(個(gè)人理解,如果表述不夠準(zhǔn)確請(qǐng)指正)。這樣就可以進(jìn)行動(dòng)態(tài)鏈接,并且正常運(yùn)行了。

靜態(tài)編譯方法:

首先我們以移植一個(gè)helloworld程序作為例子。

  • #include<stdio.h>

  • void main()

  • {

  • printf("HelloWorld!\n");

  • }

輸入命令進(jìn)行靜態(tài)編譯:arm-none-linux-gnueabi-gcc hello.c -static -o hello.out

然后利用adb push將helllo.out放進(jìn)android設(shè)備的/system/bin目錄中,

用chmod 755 /system/bin/hello.out更改其為執(zhí)行權(quán)限。

輸入: hello.out即可看到屏幕上輸出HelloWorld!

如上說所一樣,這個(gè)hello.out程序有近650k,而且其使用的代碼不可重用。

動(dòng)態(tài)鏈接方法:

動(dòng)態(tài)鏈接依舊按照上述helloworld程序作為例子。

編譯命令為:arm-none-linux-gnueabi-gcchello.c -ohello.out -Wl,-dynamic-linker=/system/lib/ld-linux.so.3  

這里需要說明的是,這個(gè)/system/lib是指android手機(jī)中存放連接器ld-linux.so.3的目錄。正式利用這個(gè)連接器來替代android系統(tǒng)中/system/bin/linker才能動(dòng)態(tài)鏈接運(yùn)行程序。

也可以加入?yún)?shù) -Wl,-rpath,/system/armcrosslib 在編譯時(shí)指定運(yùn)行時(shí)的動(dòng)態(tài)庫查找目錄。

編譯完成后,可以輸入命令 readelf -d hello.out來查看它的動(dòng)態(tài)鏈接庫有哪些。比如這個(gè)helloworld程序的動(dòng)態(tài)鏈接庫如下圖所示:

linux程序移植到android上

可以看到libgcc_s.so.1和libc.so.6就是這個(gè)helloworld所需要的動(dòng)態(tài)鏈接庫。

然后找到arm-none-linux-gnueabi-gcc的安裝目錄。如果你是解壓壓縮包配置path的安裝路徑的話,這些動(dòng)態(tài)鏈接庫文件就在./arm-none-linux-gnueabi/libc/armv4t/lib下。

找到ld-linux.so.3和上述需要的動(dòng)態(tài)鏈接庫,將他們cp出來。

然后,利用adb push將他們放入android系統(tǒng)的/system/lib目錄下,將hello.out放入到/system/bin下,更改hello.out和ld-linux.so.3的權(quán)限為可執(zhí)行即可(chmod 755 hello.out)。這里需要說明一下,ld-linux.so.3作為他們的連接器,一定需要可執(zhí)行權(quán)限,否則就會(huì)提示permission denied。

做好這些后,輸入hello.out即可看到屏幕打出helloworld!

分享名稱:linux程序移植到android上
文章URL:http://chinadenli.net/article42/gphihc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、電子商務(wù)云服務(wù)器、企業(yè)網(wǎng)站制作、Google、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
91日韩欧美中文字幕| 日本午夜免费啪视频在线 | 午夜精品麻豆视频91| 亚洲欧美国产网爆精品| 国产免费一区二区三区不卡| 日本高清不卡在线一区| 午夜精品在线视频一区| 欧美日韩国产精品黄片| 国产丝袜美女诱惑一区二区| 欧美一区二区三区性视频| 日韩国产中文在线视频| 国产午夜精品亚洲精品国产| 国产av精品一区二区| 国产又大又猛又粗又长又爽| 久久国产亚洲精品成人| 久久国产亚洲精品成人| 四季精品人妻av一区二区三区| 国产黑人一区二区三区| 99久只有精品免费视频播放| 国产又大又猛又粗又长又爽| 在线精品首页中文字幕亚洲| 国产中文字幕一区二区| 国产精品激情对白一区二区| 丰满人妻熟妇乱又乱精品古代| 欧美在线观看视频三区| 中文字幕乱码免费人妻av| 亚洲精品高清国产一线久久| 女人精品内射国产99| 国产精品成人一区二区在线| 在线观看视频日韩成人| 国产精品一区二区香蕉视频| 五月天婷亚洲天婷综合网| 国产精品欧美在线观看| 日韩偷拍精品一区二区三区| 果冻传媒精选麻豆白晶晶| 91久久精品国产一区蜜臀| 激情偷拍一区二区三区视频| 亚洲欧美国产精品一区二区| 五月婷婷综合缴情六月| 久热在线视频这里只有精品| 国产又粗又猛又黄又爽视频免费|