Linux基礎第四天

系統之間文件共享

想要實現兩個不同的系統之間實現文件共享,最簡單的一種方案就是設置VMware軟件的共享文件夾,利用共享文件夾可以實現linux系統和windows系統之間的文件共享,這樣就可以實現在windows系統上編輯程序,然后在linux系統下編譯程序以及運行程序,尤其是當使用開發板的時候,這種方案非常好用。

點擊VMware菜單欄的“虛擬機”,然后點擊“設置”,點擊“選項”,點擊“共享文件夾”

設置主機路徑(windows系統的路徑,),設置名稱(linux系統的文件夾的名稱,英文)

然后打開Terminal終端,輸入命令cd? /mnt/hgfs/ 然后按下回車,輸入ls命令查看

可以看到share文件夾就是設置好的共享文件夾的名稱,切換到該目錄即可實現共享。

ARM開發板的使用

開發板資源說明

GEC6818 開發平臺,核心板采用 10 層板工藝設計,確保穩定可靠,可以批量用于平板電腦,車機,學習機,POS 機,游戲機,行業監控等多種領域。該平臺搭載三星 Cortex-A53 系列高性能八核處理器 S5P6818,最高主頻高達 1.4GHz,可應用于嵌入式 Linux 和 Android 等操作系統的驅動、應用開發。開發板留有豐富的外設,支持千兆以太網、板載 LVDS 接口、MIPI 接口、USB 接口等。

開發板使用說明

使用5V電源適配器進行供電,通過九針串口數據線或者網線進行數據通信,連接電源線和串口數據線后,撥動電源開關上電開機。

一般而言,嵌入式開發板使用串口來監控后臺。可以使用串口線連接開發板和電腦,對于沒有串口的筆記本電腦來說,一般還需要一根USB轉串口線。

進行硬件接線,安裝USB轉串口線的CH340驅動,檢查驅動是否安裝成功,如下所示:

打開secureCRT軟件之后,點擊“快速連接”,并選擇“serial”協議,進行配置,如下:

注意:連接好串口通信線,通過“設備管理器”確定通信端口,該端口是變化的,不同主機是不同的,需要每次連接前確定下。

配置完成后,點擊“連接”,如果軟件左上角出現綠色對勾,說明端口選擇正確,如下:

如果端口正確,則打開開發板的電源開關(往上撥),等待系統啟動,此時不要按鍵盤!

注意:如果啟動的過程中卡在某一行不動,原因是開發板啟動后會自動運行一個應用程序,該應用程序占用了shell終端,此時只需要按快捷鍵Ctrl+C就可以強制結束進程,此時可以順利使用shell終端。

由于開發板板載的是Linux系統,所以可以通過secureCRT調試工具發送shell命令,如:

?

點擊secureCRT菜單欄“選項”->“會話選項”->“外觀”,修改字體大小和字符編碼:

開發板傳輸文件

注意:開發板的內存空間較小,所以開發板中的Linux系統是經過裁剪的,也就是開發板的Linux系統不具備程序的編輯能力和程序的編譯能力,只具有程序的運行能力。

所以大家需要在電腦的Linux系統中去完成程序的編輯和程序的編譯,然后把生成的可執行文件傳輸到開發板,在開發板中運行,這里可以使用多種方案實現文件的傳輸:shell命令、U盤、網線。

由于開發板進入linux系統之后直接就是超級用戶,用戶擁有開發板系統的一切權限,所以大家在操作根目錄的時候要格外小心,為了避免一些誤操作帶來系統的奔潰,所以必須在家目錄創建一個目錄用以存放個人所有的項目文件,比如workspace目錄。

掛載內存

由于開發板默認使用的是根文件系統的內存空間,根文件系統的內存空間有限,所以隨著時間的推移,GEC6818開發板的內存空間會出現使用耗盡的問題,為了避免出現用戶文件無法傳輸至開發板的Linux系統的問題,此時可以通過把硬盤剩余的空間掛在到根文件系統中進行使用。

基本使用格式

[root@GEC6818 /]# df? -h

開發板中的存儲IC是8G大小,分為了若干個扇區,所以用戶可以通過命令查看分區情況:

基本使用格式

[root@GEC6818 /]# cat? /proc/partitions

  1. 需要格式化暫未被使用的硬盤分區mmcblk0p7,避免該分區中有一些不相干的文件內容

基本使用格式

[root@GEC6818 /]# mkfs.vfat? /dev/mmcblk0p7

  1. 使用mount命令把該分區掛載到指定目錄下,一般建議掛載到用戶自己的工作目錄中

基本使用格式

[root@GEC6818 /]# mount? -t?? vfat? /dev/mmcblk0p7??? /workspace

?

檢測是否掛載成功,分區掛載指令是單次有效的,所以需要把掛載指令寫入自啟腳本中

基本使用格式

[root@GEC6818 /]# df? -h

打開開發板配置文件,該文件是開機自動執行,所以利用vi工具在文件末尾追加內容

基本使用格式

[root@GEC6818 /]# vi? /etc/profile

重啟開發板使配置文件生效 ,可以使用軟重啟 輸入命令 :reboot 等待重啟完成即可

基本使用格式

[root@GEC6818 /]# reboot

指令傳輸

切換到開發板的個人工作路徑,然后在secureCRT的shell終端中輸入命令:rx 文件名

?

點擊軟件菜單欄的“傳輸”,然后點擊“發送Xmodem”,選擇windows系統中的文件:

?

等待文件發送完成即可,可以通過進度條來檢查文件是否發送完成,具體操作如下所示:

注意:并且rx命令也無法一次傳輸多個文件,并且rx命令的傳輸速度較慢,為了解決該問題,可以把rz命令傳輸到開發板的 /bin 目錄下,這樣可以使用rz命令一次傳輸多個文件,如下:

在secureCRT的shell終端中輸入命令:rx? rz,按下回車,然后找到rz命令所在文件夾

等待文件傳輸完成,由于該文件是一個shell命令,所以需要修改權限: chmod 777 rz

?

由于系統shell命令的環境變量設置在/bin目錄下,所以需要把rz命令移動到 /bin目錄

?

測試rz命令是否正常,在secureCRT的shell終端中輸入命令:rz? 然后按下回車,如:

注意:可修改secureCRT軟件下載文件的路徑,固定每次彈出窗口的路徑位置,快速定位下載文件,如下所示

網絡傳輸

在開發板和計算機處于同一個局域網的情況下,采用網口的方式來傳輸文件是最高效的一種方式(即通過網線把主機的文件傳輸到開發板上),此時可以利用tftp工具實現,tftp的全稱是 tiny FTP,此工具專用于文件傳輸,其所為tiny意指匿名傳輸,是一種輕量級的FTP工具。

用一個網線的一端連接到開發板的網口,網線的另一端連接到路由器的一端,如下所示:

注意:上圖這種方案適合有線連接,也就是計算機通過有線連接到網絡,開發板也通過有線連接到網絡,此時需要確保開發板和計算機處于同一個網段,如果不在同一個網段,則需要配置開發板的IP地址,如下:

進入開發板的終端,在終端中輸入shell命令: ifconfig? 來查看當前開發板的網絡配置!

?

在終端輸入shell命令: ifconfig? eth0? 192.168.xxx.xxx,xxx指的是用戶擁有的IP地址!

注意:配置的開發板的IP地址是單次有效的,所以需要把該指令寫入到開發板的開機自啟動的腳本文件,開發板linux系統中開機自啟動的腳本文件的路徑是 /etc/profile,可以使用vi編輯器打開該腳本,并在腳本文件的末尾寫入該指令。

?

配置完成后,重啟開發板,然后在終端重新輸入指令:? ifconfig? 檢查開發板的IP地址

?

檢查完成后,測試開發板和計算機是否網絡處于連通狀態,指令:? ping 計算機IP地址

如果開發板和計算機的網絡連通,則打開tftpd32.exe應用程序,然后進行配置,如下:

注意:tftp工具不要關閉,只需要最小化即可,另外,如果文件的路徑更改,則需要修改tftp的文件路徑

配置好tftp軟件之后,根據實際情況在開發板的終端中輸入下載文件和上傳文件的命令

把計算機的文件下載到開發板上(IP地址為服務器IP 也就是計算機的IP地址)

[root@root:~]# tftp ?-g 192.168.xxx.xxx ?-r ??xxx???? xxx指的是文件名

把開發板的文件上傳到計算機中(IP地址為服務器IP 也就是計算機的IP地址)

[root@root:~]# tftp ?-p 192.168.xxx.xxx ?-r ??xxx???? xxx指的是文件名

交叉編譯工具安裝

交叉編譯器就是在一種計算機環境中運行的編譯程序,能編譯出在另外一種環境下運行的代碼。由于開發板的硬件平臺是ARM,但是開發板并不具備編譯程序的能力,所以需要在計算機中的linux系統對程序進行編譯。

但是計算機的硬件平臺是X86_64,所以并不能使用gcc編譯器生成在ARM平臺運行的可執行程序,所以就需要在計算機的linux系統中安裝交叉編譯工具,這樣就可以在計算機的linux系統中交叉編譯源程序并生成可以在ARM平臺運行的可執行文件。


鏈接: https://pan.baidu.com/s/1IS7UzGABw7fLxGLct5EcWg 提取碼: 47ms

把交叉編譯工具的壓縮包拷貝到設置好的共享文件夾,并從共享文件夾拷貝到家目錄!

注意不可以在共享文件夾中對該壓縮包進行解壓,因為共享文件夾是掛載到linux系統,不屬于linux系統。

對壓縮包進行解壓,輸入命令:xz?? --decompress? arm-linux-gnueabi-5.4.0.tar.xz 如下:

利用超級用戶的權限對歸檔文件進行釋放,并且直接釋放到家目錄下,操作如下所示:

解壓成功后可以看到在/home/xxx目錄下就多了一個usr文件夾,此時要配置環境變量

gec@ubuntu:~$ cd ??/home/gec/usr/local/arm/5.4.0/usr/bin???? //gec是用戶名,需要修改!

gec@ubuntu:~$ echo "export PATH=/home/gec/usr/local/arm/5.4.0/usr/bin:$PATH" ?>> ?~/.bashrc

gec@ubuntu:~$ source ~/.bashrc??? ?????????????????????????? //讓配置文件立即生效

配置好環境變量之后,測試交叉編譯工具是否正常,可以輸入命令arm-linux-gcc -v查看

如果可以查看交叉編譯工具的版本,則編寫一個源文件,利用交叉編譯工具進行編譯:

注意如果利用交叉編譯命令arm-linux-gcc對源文件進行編譯時遇到以下錯誤情況,如下圖

/usr/local/arm/5.4.0/usr/bin/../libexec/gcc/arm-none-linux-gnueabi/5.4.0/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory

原因是加載共享庫時出錯:libmpfr.so.4:無法打開共享對象文件:沒有這樣的文件或目錄

執行以下代碼即可:

sudo? ln? -s ?/usr/lib/x86_64-linux-gnu/libmpfr.so.6 ?/usr/lib/x86_64-linux-gnu/libmpfr.so.4

可以看到,使用不同的編譯器可以對同一個源文件進行編譯,只不過生成的可執行文件的執行平臺不同,可執行文件hello_arm只能在ARM平臺運行(開發板),可執行文件hello_x86只能在X86平臺運行(計算機)。

把生成的在ARM平臺運行的可執行文件發送到開發板的個人路徑,輸入:rx? demo_arm

發送到開發板的可執行文件默認沒有權限執行,原因是因為虛擬機的linux系統使用的是普通用戶,而開發板中的linux系統是超級用戶,所以文件權限不一致,導致可執行文件無法運行,此時只需要修改開發板中的可執行文件的權限為777即可,777是最高權限。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80573.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80573.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80573.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker 核心原理詳解:Namespaces 與 Cgroups 如何實現資源隔離與限制

#Docker疑難雜癥解決指南# Docker 作為容器化技術的代名詞,徹底改變了軟件的開發、部署和管理方式。它憑借其輕量、快速、一致性強的特性,成為了現代云原生架構的基石。然而,Docker 容器的神奇之處并非“無中生有”,其背后是 Linux 內核的兩大核心技術——Namespaces(命名…

GitHub 趨勢日報 (2025年05月14日)

本日報由 TrendForge 系統生成 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日整體趨勢 Top 10 排名項目名稱項目描述今日獲星總星數語言1xming521/WeClone🚀從聊天記錄創造數字分身的一站式解決方案&…

【Go】從0開始學習Go

文章目錄 從0開始學習Go0 與C對比1 代碼框架1.1 helloworld式代碼示例1.2 主體代碼元素(核心三部分)1.3 其他 2 與C/C區別3 有用的小工具4 注意事項 從0開始學習Go 0 與C對比 特性CGo編譯型語言需要編譯為機器碼直接編譯為二進制可執行文件靜態類型類型…

簡單說一下 Webpack分包

最近在看有關webpack分包的知識,搜索了很多資料,感覺這一塊很是迷惑,網上的資料講的也迷迷糊糊,這里簡單總結分享一下,也當個筆記。 如有錯誤請指出。 為什么需要分包 我們知道,webpack的作用&#xff0c…

使用Python和FastAPI構建網站爬蟲:Oncolo醫療文章抓取實戰

使用Python和FastAPI構建網站爬蟲:Oncolo醫療文章抓取實戰 前言項目概述技術棧代碼分析1. 導入必要的庫2. 初始化FastAPI應用3. 定義請求模型4. 核心爬蟲功能4.1 URL驗證和準備4.2 設置HTTP請求4.3 發送請求和解析HTML4.4 提取文章內容4.5 保存結果和返回數據 5. AP…

YoloV8改進策略:卷積篇|風車卷積|即插即用

文章目錄 論文信息論文翻譯摘要引言相關研究紅外搜索與跟蹤檢測和分割網絡紅外搜索與跟蹤數據集的損失函數紅外搜索與跟蹤數據集方法風車形卷積(PConv)基于尺度的動態損失SIRST - UAVB數據集實驗實驗設置與其他方法的比較多模型上的消融實驗結論致謝代碼改進方法測試結果總結…

【NLP】36. 從指令微調到人類偏好:構建更有用的大語言模型

從指令微調到人類偏好:構建更有用的大語言模型 大語言模型(LLMs)已經成為現代自然語言處理系統的核心,但單純依賴傳統語言建模目標,往往難以滿足實際應用的“人類意圖”。從 Instruction Tuning(指令微調&…

基于Transformers與深度學習的微博評論情感分析及AI自動回復系統

前言 這個項目存在cookie沒有自動更新問題,后續可能會發出來解決教程,還有微博網頁版的話最多看到300條評論,而且回復別人信息的話最多回復15條就要休息5分鐘左右才能評論 1. 項目概述 本項目實現了一個微博評論自動化處理系統&#xff0c…

詳解 Zephyr RTOS:架構、功能與開發指南

目錄 Zephyr RTOS 的核心特性 1. 輕量級和可擴展性 2. 實時性能 3. 多平臺支持 4. 安全性 5. 社區和生態系統 Zephyr 的架構 1. 內核 2. 驅動模型 3. 網絡棧 4. 文件系統 開發環境和工具鏈 安裝和配置 開發流程 1. 應用程序開發 2. 調試和測試 3. 部署 實際應…

人工智能重塑醫療健康:從輔助診斷到個性化治療的全方位變革

人工智能正在以前所未有的速度改變著醫療健康領域,從影像診斷到藥物研發,從醫院管理到遠程醫療,AI 技術已滲透到醫療服務的各個環節。本文將深入探討人工智能如何賦能醫療健康產業,分析其在醫學影像、臨床決策、藥物研發、個性化醫…

Linux筆記---內核態與用戶態

用戶態(User Mode) 權限級別:較低,限制應用程序直接訪問硬件或關鍵系統資源。 適用場景:普通應用程序的運行環境。 限制:無法執行特權指令(如操作I/O端口、修改內存管理單元配置等&#xff09…

Spring 代理與 Redis 分布式鎖沖突:一次鎖釋放異常的分析與解決

Spring 代理與 Redis 分布式鎖沖突:一次鎖釋放異常的分析與解決 Spring 代理與 Redis 分布式鎖沖突:一次鎖釋放異常的分析與解決1. 問題現象與初步分析2 . 原因探究:代理機制對分布式鎖生命周期的干擾3. 問題復現偽代碼4. 解決方案&#xff1…

SQL:多列匹配(Multiple-column Matching)

目錄 基礎概念 應用場景詳解 1. 多列等值匹配 2. 多列 IN 匹配(集合匹配) 3. 多列 JOIN 匹配(復合鍵連接) 4. 多列匹配 子查詢 5. 多列匹配 EXISTS 6. 多列匹配 UNION(組合數據源) 7. 多列匹配…

基于DeepSeek的智能客服系統實踐與創新

引言:AI大模型重塑客戶服務新范式 近年來,AI大模型技術的突破性進展正在深刻改變傳統客戶服務模式。作為國內領先的AI企業,DeepSeek憑借其創新的算法架構(如MoE混合專家模型、動態學習率調度器)和極致的成本效益(僅為同類模型成本的1/20),在自然語言理解、情感分析、多…

SGLang和vllm比有什么優勢?

環境: SGLang vllm 問題描述: SGLang和vllm比有什么優勢? 解決方案: SGLang和vLLM都是在大語言模型(LLM)推理和部署領域的開源項目或框架,它們各自有不同的設計目標和優勢。下面我綜合目前…

三、Hive DDL數據庫操作

在 Apache Hive 中,數據庫 (Database),有時也被稱為模式 (Schema),是組織和管理 表及其他對象的基本命名空間單元。熟練掌握數據庫層面的數據定義語言 (DDL) 操作,是構建清晰、有序的 Hive 數據倉庫的第一步。本篇筆記將詳細梳理 …

Redis(2):Redis + Lua為什么可以實現原子性

Redis 作為一款高性能的鍵值對存儲數據庫,與 Lua 腳本相結合,為實現原子性操作提供了強大的解決方案,本文將深入探討 Redis Lua 實現原子性的相關知識 原子性概念的厘清 在探討 Redis Lua 的原子性之前,我們需要明確原子性的概念…

科普:極簡的AI亂戰江湖

本文無圖。 大模型 ?2022年2月,?文生圖應用的鼻祖Midjourney上線。 ?2022年8月,?開源版的Midjourney,也就是Stable Diffusion上線。 2022年11月30日?,OpenAI正式發布ChatGPT-3.5。 此后,不斷有【大模型】面世&…

CSS- 4.5 css + div 布局 簡易網易云音樂 官網布置實例

本系列可作為前端學習系列的筆記,代碼的運行環境是在HBuilder中,小編會將代碼復制下來,大家復制下來就可以練習了,方便大家學習。 HTML系列文章 已經收錄在前端專欄,有需要的寶寶們可以點擊前端專欄查看! 點…

【滑動窗口】LeetCode 1004題解 | 最大連續1的個數 Ⅲ

最大連續1的個數 Ⅲ 一、題目鏈接二、題目三、題目解析四、算法原理解法一:暴力枚舉 zero計數器解法二:滑動窗口 五、編寫代碼六、時空復雜度 一、題目鏈接 最大連續1的個數 Ⅲ 二、題目 三、題目解析 注意題目中說的是最多k次,在一個數組…