日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux程序移植到Android上

發(fā)布時(shí)間:2025/6/15 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux程序移植到Android上 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

序言:

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

傳統(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)行程序。

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

可以看到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!

總結(jié)

以上是生活随笔為你收集整理的Linux程序移植到Android上的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色婷婷91 | 精品一区二区三区视频日产 | 国产刺激视频 | 日本免费精品视频 | 黄色片网站在线观看 | 日韩欧美少妇 | 玖玖视频 | 超碰人人草人人干 | 国产裸体视频网站 | 爱爱视频欧美 | 久久精品无码Av中文字幕 | 无法忍受在线观看 | 久久久久久免费观看 | 日韩欧美中文字幕一区二区 | 国产自产在线视频 | 麻豆视频在线播放 | 国产成人精品毛片 | 伊人久久艹 | 瑟瑟久久 | 日韩精品在线免费 | 成人一级片 | 国产视频久久久 | 日韩视频免费在线观看 | 日韩激情中文字幕 | 国产网站av | 韩国无码一区二区三区精品 | 97精品一区二区三区 | 日韩精品123 | 欧美在线观看www | 成人免费区一区二区三区 | 日本人做受免费视频 | 久久精品国产亚洲av麻豆 | 秘密基地电影免费版观看国语 | 人人cao| 黑人操日本女人视频 | 九九热在线视频播放 | 蘑菇福利视频一区播放 | 性欢交69精品久久久 | 亚洲视频1 | 99人妻碰碰碰久久久久禁片 | a在线视频 | 在线观看视频免费 | 好男人在线视频www 亚洲福利国产 | 91麻豆精品在线 | 无套内谢的新婚少妇国语播放 | 男生脱女生衣服 | 樱花草av| 风韵少妇spa私密视频 | 欧美日本国产 | 成人h动漫精品一区二区下载 | 欧美国产在线看 | 97色爱 | 日韩精品在线播放 | 日韩色资源 | 波多野结衣久久久久 | 亚洲成在线 | 欧美剧场| 欧美一级网 | av国产精品| 亚洲AV无码片久久精品 | 人妻一区二区三区免费 | www.奇米 | 水多多在线 | www,四虎 | 亚洲第一色网 | 亚洲1234区 | 日本少妇裸体做爰高潮片 | 亚洲综合成人在线 | 超薄肉色丝袜一二三 | 污污视频在线观看网站 | 影音先锋激情 | 婷婷色九月 | 亚洲av永久中文无码精品综合 | 欧美xxx视频| 一本一道久久a久久 | 四川话毛片少妇免费看 | 国产在线一区二区三区四区 | 狠狠看| 黄色av片三级三级三级免费看 | 黄色特一级 | 欧美日韩在线播放三区四区 | 日本综合视频 | 久久久久久久9999 | 无码国产精品久久一区免费 | 天天热天天干 | 亚洲成人久 | av直接看| 国产精品19p| 亚洲综合成人网 | 无码av免费毛片一区二区 | 亚洲色图综合在线 | 亚洲日本精品一区 | 超碰麻豆| 久草手机在线 | 91麻豆免费视频 | 国产www色| 精品久久国产视频 | 一级全黄裸体免费视频 | 波多野结衣福利视频 |