編譯FreeRDP的so文件簡單記錄

一般來說so文件我習(xí)慣在windows下去編譯鸵荠,并且一般需要linux環(huán)境的也能使用Mingw完成。但是進(jìn)過一些嘗試后發(fā)現(xiàn)FreeRDP無法使用MinGW去生成so文件脖苏。
但是我沒有私人linux環(huán)境敬辣,因此最快的獲得環(huán)境的方法就是買個(gè)vps。注意:內(nèi)存盡量大一點(diǎn)的陋气,內(nèi)存太小編譯過程中會(huì)報(bào)錯(cuò)導(dǎo)致無法編譯成功。
之前我用一個(gè)512M的去搭環(huán)境編譯然后編譯過程中報(bào)錯(cuò)引润。后面我就買了個(gè)8G的巩趁。裝了Centos 8 x86_64 bbr的系統(tǒng),因?yàn)槲蚁鄬?duì)習(xí)慣這個(gè)系統(tǒng)淳附。選了那家以便宜出名的议慰,因?yàn)榫C合看下來,他家真的最便宜奴曙,而且價(jià)格明了别凹。


image.png

根據(jù)README.android

image.png

可知,編譯so需要安裝配置cmake洽糟,ndk炉菲, sdk堕战。
這里有一點(diǎn)需要注意:相關(guān)路徑需盡量與通過Android studio配置的保持一致。
例如通過Android studio安裝cmake的話拍霜,路徑默認(rèn)為C:\Users\admin\AppData\Local\Android\Sdk\cmake
image.png

image.png

linux環(huán)境中cmake放到sdk路徑下嘱丢。
之前我是通過編譯安裝,目錄與sh文件定義的位置不同祠饺,后面發(fā)現(xiàn)執(zhí)行sh文件的時(shí)候報(bào)錯(cuò)找不到cmake越驻。
因?yàn)閟h文件中默認(rèn)定義了cmake 的位置為ANDROID_SDK路徑下。

//android-build-common.sh
CMAKE_PROGRAM=$(find $ANDROID_SDK/cmake -name cmake -type f -executable -print -quit)

下面來記錄下vps安裝Centos 系統(tǒng)后編譯so文件的完整流程道偷。
使用SecureCRT或者xshell等工具缀旁,進(jìn)入linux環(huán)境中。如果ip不可用勺鸦,可使用跳板機(jī)诵棵。

首先,先使用SecureCRT登陸祝旷,Username一般是root履澳,密碼就是裝系統(tǒng)后顯示的那個(gè)密碼。
輸入密碼后就連接上了怀跛。

image.png

默認(rèn)SWAP大小為521M距贷,這個(gè)得調(diào)大。
image.png

可參考這篇文章:
搬瓦工VPS安裝Ubuntu擴(kuò)大swap分區(qū)
首先進(jìn)入swap文件對(duì)應(yīng)目錄吻谋。
image.png

關(guān)掉所有swap文件和swap分區(qū)

swapoff -a

刪除原來的swap文件

rm swap 
image.png

在原位置新建8G的空文件忠蝗,這里按需更改即可。這里要等一段時(shí)間漓拾。

dd if=/dev/zero of=/swap bs=8M count=1024

將新建的空文件格式化為swap文件

mkswap /swap

修改swap文件為安全的權(quán)限

chmod 0644 /swap

啟用swap文件

swapon /swap
image.png

有一句權(quán)限的提示但是不影響阁最,此時(shí)查看面板可以看到已經(jīng)改好。


image.png

下面來開始安裝sdk骇两,ndk速种,cmake,jdk低千。
1.sdk的安裝配阵。
由于是Centos 系統(tǒng),這里可以選擇通過wget命令來下載示血,先安裝wget棋傍。

yum -y install wget

進(jìn)入/usr/local目錄,下載sdk文件难审。

wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
image.png

新建一個(gè)名為android-sdk的文件夾瘫拣。

mkdir /usr/local/android-sdk

進(jìn)入android-sdk文件夾。

cd /usr/local/android-sdk

用 mv 把sdk包移動(dòng)到 /usr/local/android-sdk/目錄下

mv /usr/local/android-sdk_r24.4.1-linux.tgz /usr/local/android-sdk/
image.png

使用tar解壓告喊。

tar -zxvf android-sdk_r24.4.1-linux.tgz

解壓后需配置系統(tǒng)變量麸拄,在此之前需安裝vim派昧。
安裝vim。

yum -y install vim

通過vim編輯/etc/profile 文件感帅。

vim /etc/profile 

打開后,按i進(jìn)入編輯狀態(tài)地淀。
在文件末端 添加如下配置:

export ANDROID_SDK=/usr/local/android-sdk/android-sdk-linux
export PATH=$ANDROID_SDK/tools:$PATH

.export 在shell中用于變量的綁定失球,當(dāng)開啟一個(gè)新shell進(jìn)程時(shí),會(huì)拷貝這個(gè)變量用于變量輸出 帮毁。
編輯完后按ESC,并且輸入:wq保存退出实苞。

使配置文件立即生效

source /etc/profile 

2.安裝JDK。
在此之前還需要先配置JDK烈疚。由于jdk部分版本需要賬號(hào)才能下載黔牵,新版本不需要,可以通過wget 下載爷肝,但是下載鏈接貌似隔天就會(huì)失效猾浦,因此這里放出官網(wǎng)鏈接。
https://www.oracle.com/java/technologies/javase-jdk15-downloads.html
選擇我需要的版本灯抛。

image.png

image.png

復(fù)制下載鏈接金赦。


image.png

進(jìn)入/usr/local目錄。
通過鏈接下載jdk对嚼。注意:這個(gè)鏈接會(huì)失效夹抗,需自行從官網(wǎng)獲取。

wget https://download.oracle.com/otn-pub/java/jdk/15.0.1+9/51f4f36ad4ef43e39d0dfdbaf6549e32/jdk-15.0.1_linux-x64_bin.tar.gz?AuthParam=1604989766_33c48b09c45145ae9d8253f0b2cfa941

查看當(dāng)前文件名纵竖。然后使用使用tar解壓漠烧。


image.png
tar -zxvf jdk-15.0.1_linux-x64_bin.tar.gz?AuthParam=1604989766_33c48b09c45145ae9d8253f0b2cfa941
image.png

解壓完后,配置環(huán)境變量靡砌。

vim /etc/profile 

增加如下

export JAVA_HOME=/usr/local/jdk-15.0.1
export PATH=.:$JAVA_HOME/bin:$PATH

使配置文件立即生效

source /etc/profile 

測試是否安裝成功已脓。

java -version
image.png

3.安裝NDK。
ndk下載地址如下:https://developer.android.com/ndk/downloads

image.png

進(jìn)入/usr/local/android-sdk/android-sdk-linux目錄通殃。
使用wget下載摆舟。

wget https://dl.google.com/android/repository/android-ndk-r21b-linux-x86_64.zip
image.png

需要使用unzip xxxx.zip 解壓,因此下載unzip邓了。

yum install  unzip

使用unzip解壓恨诱。

unzip  android-ndk-r21b-linux-x86_64.zip

使用vim 配置環(huán)境變量。

vim /etc/profile 

增加如下所示骗炉。

export ANDROID_NDK=/usr/local/android-sdk/android-sdk-linux/android-ndk-r21b
export PATH=$ANDROID_NDK:$PATH

使配置文件立即生效

source /etc/profile 

使用ndk-build測試是否配置成功照宝。
會(huì)報(bào)錯(cuò),因?yàn)闆]有課編譯的文件句葵。

image.png

4.安裝Cmake
Cmake這里注意不要通過編譯安裝厕鹃,編譯安裝的話如果不配置安裝位置的話兢仰,在編譯FreeRDP的so文件的時(shí)候會(huì)有坑。

cmake官網(wǎng)的https://cmake.org/download/ 中下載鏈接是github的剂碴,但是em把将。。wget下載不了忆矛。但是https://cmake.org/files/這個(gè)目錄下的可以下載察蹲。
使用wget下載。

wget https://cmake.org/files/v3.13/cmake-3.13.0-Linux-x86_64.tar.gz

使用tar解壓催训。

tar -xzvf cmake-3.13.0-Linux-x86_64.tar.gz
image.png

使用mv把cmake-3.13.0-Linux-x86_64文件夾名稱改為為cmake洽议。(注意,這里是必需的漫拭,不然執(zhí)行sh文件的時(shí)候可能找不到cmake亚兄,要么改這里要么改sh文件,得選一個(gè)吧)

mv cmake-3.13.0-Linux-x86_64  cmake 

設(shè)置環(huán)境變量采驻。

vim /etc/profile 

新增如下

PATH=/usr/local/android-sdk/android-sdk-linux/cmake/bin:$PATH
export PATH

使配置文件立即生效

source /etc/profile 

使用cmake --version測試

image.png

最終/etc/profile 中新增如下审胚。

export ANDROID_NDK=/usr/local/android-sdk/android-sdk-linux/android-ndk-r21b
export PATH=$ANDROID_NDK:$PATH

export ANDROID_SDK=/usr/local/android-sdk/android-sdk-linux
export PATH=$ANDROID_SDK/tools:$PATH

PATH=/usr/local/android-sdk/android-sdk-linux/cmake/bin:$PATH
export PATH

export JAVA_HOME=/usr/local/jdk-15.0.1
export PATH=.:$JAVA_HOME/bin:$PATH

至此,JDK,NDK,SDK,JDK配置完成礼旅。
下面的目標(biāo)是編譯FreeRDP菲盾。
進(jìn)入/mnt目錄下,使用git clone下載FreeRDP各淀。這里還需要下載git懒鉴。

yum install git 
image.png
git clone https://github.com/FreeRDP/FreeRDP.git
image.png

由于需要執(zhí)行

./scripts/android-build-freerdp.sh --ndk <ANDROID_NDK> --sdk <ANDROID_SDK>

ANDROID_NDK和ANDROID_SDK需修改成本機(jī)的路徑,因此需進(jìn)入/mnt/FreeRDP目錄碎浇,然后執(zhí)行

./scripts/android-build-freerdp.sh --ndk /usr/local/android-sdk/android-sdk-linux/android-ndk-r21b --sdk /usr/local/android-sdk/android-sdk-linux

但是會(huì)報(bào)錯(cuò):

/usr/bin/env: python3: No such file or directory

仍然缺少東西临谱。使用yum安裝python。

yum install python3

重新執(zhí)行android-build-freerdp.sh奴璃。

./scripts/android-build-freerdp.sh --ndk /usr/local/android-sdk/android-sdk-linux/android-ndk-r21b --sdk /usr/local/android-sdk/android-sdk-linux

進(jìn)入jniLibs目錄悉默。

cd /mnt/FreeRDP/client/Android/Studio/freeRDPCore/src/main/jniLibs

隨便進(jìn)入一個(gè)文件夾下,就可以看到生成的so文件了苟穆。


image.png

然后需要將so文件從vps下載抄课。
具體可以參考這篇。
簡單快捷的方式從vps下載文件

然后使用過程中有個(gè)坑雳旅,由于Android7的so文件的使用是有bug跟磨,這種在library中加載so文件的方式在Android7中會(huì)加載失敗,因此測試的話要么避免使用Android7攒盈,要么就改工程文件吧抵拘,不使用Library就行。
然后在windows中打開Android studio型豁,選擇FreeRDP-master\client\Android\Studio這個(gè)目錄打開僵蛛。

把你需要的so文件放到j(luò)niLibs目錄尚蝌,然后連上運(yùn)行即可。
image.png

參考鏈接:
Ubuntu:安裝cmake
centos6.5 安裝cmake 3.3.2
/usr/bin/env: python3: No such file or directory
Centos出現(xiàn)-bash: unzip: command not found的解決辦法
-bash: vim: command not found 兩種解決方法
解決: Linux – git: command not found
Linux:Centos 安裝配置NDK
ubuntu 16.04 + cmake 升級(jí)
linux安裝cmake
Linux下make充尉、cmake指定安裝目錄
-bash: pip: command not found pip命令報(bào)錯(cuò) 解決方法
搬瓦工VPS安裝Ubuntu擴(kuò)大swap分區(qū)
簡單快捷的方式從vps下載文件
-bash: pip: command not found pip命令報(bào)錯(cuò) 解決方法
FreeRDP
linux 下安裝配置 android sdk-24.4
Linux 下安裝JDK1.8

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末飘言,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子驼侠,更是在濱河造成了極大的恐慌姿鸿,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泪电,死亡現(xiàn)場離奇詭異般妙,居然都是意外死亡纪铺,警方通過查閱死者的電腦和手機(jī)相速,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲜锚,“玉大人突诬,你說我怎么就攤上這事∥叻保” “怎么了旺隙?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長骏令。 經(jīng)常有香客問我蔬捷,道長,這世上最難降的妖魔是什么榔袋? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任周拐,我火速辦了婚禮,結(jié)果婚禮上凰兑,老公的妹妹穿的比我還像新娘妥粟。我一直安慰自己,他們只是感情好吏够,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布勾给。 她就那樣靜靜地躺著,像睡著了一般锅知。 火紅的嫁衣襯著肌膚如雪播急。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天售睹,我揣著相機(jī)與錄音旅择,去河邊找鬼。 笑死侣姆,一個(gè)胖子當(dāng)著我的面吹牛生真,可吹牛的內(nèi)容都是我干的沉噩。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼柱蟀,長吁一口氣:“原來是場噩夢啊……” “哼川蒙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起长已,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤畜眨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后术瓮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體康聂,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年胞四,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恬汁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辜伟,死狀恐怖氓侧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情导狡,我是刑警寧澤约巷,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布,位于F島的核電站旱捧,受9級(jí)特大地震影響独郎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜枚赡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一氓癌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧标锄,春花似錦顽铸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至践剂,卻和暖如春鬼譬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逊脯。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國打工优质, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓巩螃,卻偏偏與公主長得像演怎,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子避乏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

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