蘇嵌實訓 嵌入式Linux C 第 1天

2021-10-07 18:15:05 字數 4946 閱讀 2571

蘇嵌實訓-嵌入式linux c 第 1 天

專案名稱

【蘇嵌實訓-嵌入式 linux c 第 1 天】

今日進度以及任務

今日課程上午主要講了嵌入式的一些基本概念和發展前景,稍微提了下linux安裝

下午主要講了一下linux基本命令

本日任務完成情況

(詳細說明本日任務是否按計畫完成,開發的**量)

1. 在 linux 虛擬機器上使用 linux 命令

2. 用 gedit 或者vim 編寫 c 源**,用 gcc 編譯產生可執行檔案

3. 自學 20 個 linux 命令和完成兩個c語言程式設計題 

4. 完成老師留的作業

所有任務都已完成

本日開發**現的問題彙總

1. 如何解決無法刪除使用userdel刪除使用者的問題

2. centos7的vim配置優化

本日未解決問題 1.

還未將vim的縮排設定調整好

2.沒有將vim徹底掌握,還有模糊的地方

本日開發收穫 1.

學習了大部分linux的基礎命令,管理使用者,檔案、目錄操作相關的命令

2.學會了利用vim編輯器寫c語言程式並執行

3. 學會了

使用 gedit 和 vim 編寫** 其他

今後也要認真學習作業

1.嵌入式底層開發為什麼選擇c語言?

彙編明顯是效能(執行效率)方面最高的,但組合語言開發效率方面明顯是最低的。所以除非是要求極端高效能的嵌入式平台,使用組合語言的不多。我們一般進行初始化時會使用組合語言。而其它高階語言的執行效率一般比較低,源**和目標**也可能會比較長。這樣占用的記憶體也會比較大。嵌入式開發的程式設計是要在開發板上跑的,占用記憶體的增多必然會影響效能。這樣一來,c語言的優勢就會凸現出來啦。

2.什麼是實時性?軟實時和硬實時?

實時性是指系統能及時響應外部事件的請求,在規定時間內完成對該事件的處理。

硬實時是指系統必須滿足任務對截止時間的要求,否則可能出現難以**的後果。

軟實時是指也聯絡乙個截止時間,但並不嚴格若偶爾錯過了任務的截止時間,對系統產生的影響也不會太大。

3.linux和unix之間的聯絡或者關係?

unix:2023年,mit、bell實驗室、美國通用電氣****一起致力於開發 multics 專案。2023年,當時在開發multics專案的時候,實驗室中有乙個開發成員提議組織人員重新在multics專案之上重新的開發,也就出現了2023年的unix。當時unix作業系統是使用的組合語言(機器語言)開發的。2023年, 用c語言重寫unix,因為組合語言有乙個最大的侷限性:對於計算機硬體過於依賴。導致移植性不好。2023年 bell實驗室允許大學使用unix,但bell實驗室允許大學使用unix作業系統用於教學作用,而不允許用於商業用途。

兩者之間的關係:linux源自於unix,linux是開源的作業系統,有開放性、多使用者、多工、良好的使用者介面、優異的效能與穩定性的優點,但unix不是開源作業系統。

4.linux主流的發行版有哪些?有什麼特點?

(1) debian:debian執行起來極其穩定,這使得它非常適合用於伺服器。debian平時維護三套正式的軟體庫和一套非免費軟體庫。

(2) gentoo:與debian一樣,gentoo這款作業系統也包含數量眾多的軟體包。gentoo並非以預編譯的形式出現,而是每次需要針對每個系統進行編譯。

(3) 紅帽企業級linux:紅帽企業級linux是系統管理員的第一選擇,使用yum程式包管理器。是商業化產品,所以不是免費的。

(4) centos:centos是一款企業級linux發行版,它使用紅帽企業級linux中的免費源**重新構建而成。

(5) fedora:fedora就是紅帽公司的乙個測試平台;產品在成為企業級發行版之前,在該平台上進行開發和測試。fedora是一款非常好的發行版,有龐大的使用者論壇,軟體庫中還有為數不少的軟體包。

(6) kali linux:kali linux是debian的一款衍生版。kali旨在用於滲透測試。

(7) arch linux:arch linux的軟體包管理器是pacman。arch linux既支援x86處理器架構,又支援x86_64架構。arch旨在從開發者的角度而不是從使用者的角度做到力求簡單。

5.有哪些虛擬機器軟體?特點?

(1)vmware workstation,vmware公司的虛擬機器軟體,vmware公司是全球桌面到資料中心虛擬化解決方案的領導廠商,vmware workstation是最好用的虛擬機器軟體之一。

(2)virtual box,virtual box是oracle公司旗下的免費開源虛擬機器軟體。

(3)windows virtual pc,微軟公司旗下產品,windows virtual pc 是最新的 microsoft 虛擬化技術。您可以使用此技術在一台計算機上同時執行多個作業系統。

(4)vmware player,vmware推出的免費小巧的虛擬機器軟體,精簡版vmware workstation。

6.如何解決無法刪除使用userdel刪除使用者的問題(2種方法)

(1)使用vipw命令:

vipw 找到之前建立的使用者,刪除使用者資訊。

vipw -s 找到那個使用者所屬組,刪除使用者組資訊。

(2)用 ps 檢視該使用者所有程序的pid,再將程序都 kill

7.羅列根目錄中所有子目錄以及其存放的檔案型別

(1)bin:該目錄中儲存的都是一些二進位制檔案,檔案都是可以被執行的。

(2)dev:該目錄中主要存放的是外接裝置,例如盤、其他的光碟等。在其中的外接裝置是不能直接被使用的,需要掛載。

(3)etc:該目錄主要儲存一些配置檔案。

(4)home:表示除了root使用者以外其他使用者的家目錄,類似於windows下的user/使用者目錄。

(5)proc:process,表示程序,該目錄中儲存的是linux執行時候的程序。

(6)root:該目錄是root使用者自己的家目錄。

(7)sbin:全稱super binary,該目錄也是儲存一些可以被執行的二進位制檔案,但是必須得有super許可權的使用者才能執行。

(8)tmp:表示「臨時」的,當系統執行時候產生的臨時檔案會在這個目錄存著。

(9)usr:存放的是使用者自己安裝的軟體。類似於windows下的program files。

(10)var:存放的程式/系統的日誌檔案的目錄。

(11)mnt:當外接裝置需要掛載的時候,就需要掛載到mnt目錄下。

8.自學 20 個linux命令:

(1)df:檢視磁碟的空間

df -h //-h表示以可讀性較高的形式展示大小

(2)free:檢視記憶體使用情況

free -m //-m表示以mb為單位檢視

(3)head:檢視乙個檔案的前n行,如果不指定n,則預設顯示前10行。

head -n filepath

(4)tail指令:檢視乙個檔案的未n行,如果n不指定預設顯示後10行

tail -n filepath

less filepath

(6)wc:統計檔案內容資訊(包含行數、單詞數、位元組數)

wc -lwc filepath

-l:表示lines,行數

-w:表示words,單詞數 依照空格來判斷單詞數量

-c:表示bytes,位元組數

(7)date:表示操作時間日期(讀取、設定)

date 輸出的形式:2023年 3月 24日 星期六 15:54:28

date +%f (等價於#date 「+%y-%m-%d」 ) 輸出形式:2018-03-24

date 「+%f %t」 引號表示讓「年月日與時分秒」成為乙個不可分割的整體

date -d 「-1 day」 「+%y-%m-%d %h:%m:%s」

(8)hostname:操作伺服器的主機名(讀取、設定)

hostname 含義:表示輸出完整的主機名

hostname -f  含義:表示輸出當前主機名中的fqdn(全限定網域名稱)

(9)id:檢視乙個使用者的一些基本資訊(包含使用者id,使用者組id,附加組id…),該指令如果不指定使用者則預設當前使用者。

id 預設顯示當前執行該命令的使用者的基本資訊

id 使用者名稱  顯示指定使用者的基本資訊

(10)whoami:「我是誰?」顯示當前登入的使用者名稱,一般用於shell指令碼,用於獲取當前操作的使用者名稱方便記錄日誌。

(11)ps :主要是檢視伺服器的程序資訊

ps -ef

-e:等價於「-a」,表示列出全部的程序

-f:顯示全部的列(顯示全欄位)

(12)top:檢視伺服器的程序佔的資源

(13)du:檢視目錄的真實大小

du -sh 目錄路徑

-s:summaries,只顯示彙總的大小

-h:表示以高可讀性的形式進行顯示

(14)find:用於查詢檔案

find 路徑範圍 選項 選項的值

選項:-name:按照文件名稱進行搜尋(支援模糊搜尋)

-type:按照文件的型別進行搜尋

(15)service:用於控制一些軟體的服務啟動/停止/重啟

service 服務名 start/stop/restart

(16)kill:表示殺死程序

kill 程序pid

(18)reboot:重新啟動計算機

shutdown:關機

shutdown -h now 或 shutdown -h 15:25

uname -a 獲取全部的系統資訊(型別、全部主機名、核心版本、發布時間、開源計畫)

(21)netstat -tnlp:檢視網路連線狀態

netstat -tnlp

-t:表示只列出tcp協議的連線;

-l:表示過濾出「state(狀態)」列中其值為listen(監聽)的連線;

-p:表示顯示發起連線的程序pid和程序名稱。

蘇嵌實訓 嵌入式 linux C 第 1 天

專案名稱 蘇嵌實訓 嵌入式 linux c 第 1 天 今日進度以及任務嵌入式開發概述及嵌入式linux c專案演示 嵌入式環境安裝與使用 本日任務完成情況已完成課上布置的7個小題作業,並把課上的筆記做了相應整理。本日開發 現的問題彙總1 使用目錄指令的時候用 cd.不能返回上一級目錄並且報錯,查詢...

蘇嵌實訓 嵌入式 linux C 第 1 天

專案名稱 蘇嵌實訓 嵌入式 linux c 第 1 天 今日進度以及任務 嵌入式開發概述以及嵌入式linux c專案演示。還有嵌入式開發環境的安裝以及使用。本日任務完成情況 詳細說明本日任務是否按計畫完成,開發的 量 1 red hat enterprise linux 乙個強大的伺服器作業系統,擁...

蘇嵌實訓 嵌入式 linux C 第2天

專案名稱 蘇嵌實訓 嵌入式 linux c 第2天 今日進度以及任務 明白編譯過程,學會gcc和gbd的使用,會製作gcc靜態庫和動態庫,學會工程管理器make 本日任務完成情況 知道了工程編譯過程,學會了gcc和gbd,會製作gcc靜態庫和動態庫,不太懂工程管理器make 本日開發 現的問題彙總 ...