物聯網工程實訓-蘇嵌嵌入式linux C實訓 第 1 天

 

                                                                                      項目開發日報表

項目名稱 【蘇嵌實訓-嵌入式 linux C 第1天】
今日進度以及任務 嵌入式開發概述及嵌入式Linux C項目演示、嵌入式環境安裝與使用

本日任務完成情況

①、Linux用戶管理命令:su sudo useradd usermod passwd
②、Linux文件管理命令:ls chmod touch cat gedit gcc
③、Linux目錄命令:mkdir rmdir cp mv rm
④、Linux一點哲學:“一切皆爲文件”、linux文件分類、Linux屬性
⑤、文本編輯器:vim 三種模式:命令行模式---(按i/a)插入模式--(ESC)低行模式
⑥、修改vimrc

⑦、linux下簡單c程序(如helloworld、計算1+...+n )  

⑧、linux下簡單c程序 計算1-n中含9的數字個數、倒置字符串 (程序見附錄)



 
本日開發中出現的問題彙總

1 嵌入式底層開發爲什麼選擇c語言

答:

①C語言有出色的可移植性,能在多種不同體系結構的軟/硬平臺上運行。

②簡潔緊湊,使用靈活的語法機制,並能直接訪問硬件能夠直接訪問硬件的語言有:彙編和C語言彙編屬於低級語言,難以完成一些複雜的功能,但是彙編比C語言訪問硬件的效率更高。

所以,一般將硬件初始化的工作交給彙編,比較複雜的操作交給C語言。

③C語言具有很高的運行效率。

④面向過程

2、什麼是實時性,什麼是硬實時,什麼是軟實時

答:

實時性指時鐘信號能夠準確的定時,各處的時鐘能夠達到一致。
硬實時系統有一個剛性的、不可改變的時間限制,它不允許任何超出時限的錯誤。超時錯誤會帶來損害甚至導致系統失敗、或者導致系統不能實現它的預期目標。
軟實時系統是一個柔性靈活的,它可以容忍偶然的超時錯誤。失敗造成的後果並不嚴重,例如在網絡中僅僅是輕微地降低了系統的吞吐量
3、Linux和Unix之間的關係

答:

二者的關係,不是大哥和小弟,"UNIX 是 Linux 的父親"這個說法更怡當。之所以要介紹它們的關係,是因爲要告訴讀者,在學習的時候,其實 Linux 與 UNIX 有很多的共通之處,簡單地說,如果你已經熟練掌握了 Linux,那麼再上手使用 UNIX 會非常容易。

二者也有兩個大的區別:

UNIX 系統大多是與硬件配套的,也就是說,大多數 UNIX 系統如 AIX、HP-UX 等是無法安裝在 x86 服務器和個人計算機上的,而 Linux 則可以運行在多種硬件平臺上;
UNIX 是商業軟件,而 Linux 是開源軟件,是免費、公開源代碼的。

 

這裏有詳細介紹
 

4、Linux主流發行版本有哪些及特點

答:

紅帽企業系統(RedHat Enterprise Linux, RHEL)
全球最大的開源技術廠商,全世界內使用最廣泛的Linux發佈套件,
提供性能與穩定性極強的Linux套件系統並擁有完善的全球技術支持。

社區企業操作系統(CentOS)
最初是將紅帽企業系統“重新編譯/發佈”給用戶免費使用而廣泛使用,
當前已正式加入紅帽公司並繼續保持免費(隨RHEL更新而更新)。

紅帽用戶桌面版(Fedora [Linux])
最初由紅帽公司發起的桌面版系統套件(目前已經不限於桌面版),
用戶可免費體驗到最新的技術或工具,而功能成熟後加入到RHEL中。
 


國際化組織的開源操作系統(Debian)
提供超過37500種不同的自由軟件且擁有很高的認可度,
對於各類內核架構支持性良好,穩定性、安全性強更有免費的技術支持。
 


基於Debian的桌面版(Ubuntu)
Ubuntu是一款基於Debian派生的產品,對新款硬件具有極強的兼容能力。
普遍認爲Ubuntu與Fedora都是極其出色的LINUX桌面系統。


國產系統

國防科技大學發行麒麟kylin和中科院發行紅旗RedFlag。

 

5、有哪些虛擬機軟件 特點是什麼

答:

Vmware Workstation,VMware公司的優秀虛擬機軟件,VMware公司是全球桌面到數據中心虛擬化解決方案的領導廠商

 

Virtual Box,Virtual Box是Oracle公司旗下的免費開源虛擬機軟件,在 Sun 被 Oracle 收購後正式更名成 Oracle VM VirtualBox。

 

Windows Virtual PC,微軟公司旗下產品,Windows Virtual PC 是最新的 Microsoft 虛擬化技術。您可以使用此技術在一臺計算機上同時運行多個操作系統,並且只需單擊一下,便可直接在運行 Windows 7 的計算機上的虛擬 Windows 環境中運行許多生產應用程序。

 

VMware Player,VMware推出的免費小巧的虛擬機軟件,精簡版VMware Workstation

 

6、如何解決userdel刪除用戶的問題

答:

1:
使用vipw刪除創建的用戶
使用vipw -s 刪除創建的用戶組
2:
1.vi /etc/passwd添加pipetest❌506:506::/home/pipetest:/bin/bash(不一定是506,而是在最好一個行數目上加1)
2.vi /etc/shadow添加pipetest:!!:15056:0:99999:7:::(不一定所15056,而是在最後一行數目上加3)
3.mkdir /home/pipetest/cp /etc/skel/.bash* /home/pipetest/
4.userdel pipetest
 

 

7、羅列根目錄中所以子目錄的功能及存放的文件類型

答:

/bin 二進制可執行命令。
/dev 設備特殊文件
/etc 系統管理和配置文件
/home 用戶目錄的基點
/lib 標準程序設計庫,又叫動態鏈接共享庫
/sbin 系統管理命令,這裏存放系統管理員使用的管理程序
/tmp 公用的臨時文件存儲點
/root 系統管理員的主目錄
/mnt 系統提供這個目錄就是讓用戶臨時掛載其他的文件系統
/var 某些大文件的益出區
/usr 最龐大的目錄,要用到的程序和文件幾乎在這個目錄
原文鏈接:https://blog.csdn.net/z1127805482/article/details/64922640
/bin:存放普通用戶可執行的命令,系統中任何用戶都可執行。
/boot:存放Linux內核文件以及開機菜單與開機所配置文件。
/dev:存放設備文件的存儲目錄,如硬盤、光驅等。
/etc:存放系統的配置文件,如用戶賬號密碼、各種服務的起始文件等。只有root有權利修改。
/home:普通用戶的主目錄,每個用戶在該目錄下都有一個與用戶同名的目錄。
/lib:存放開機時用到的函數庫,以及在/bin或/sbin下的命令會調用的函數庫。
/media:存放可刪除的設備,如軟盤、光盤、DVD等設備都暫時掛載於此。
/mnt:暫時掛載某些額外的設備。
/opt:存放第三方軟件。
/root:超級用戶root的主目錄。
/sbin:存放開機、修復、還原系統所需要的命令。
/srv:是一些網絡服務啓動之後,這些服務所需要取用的數據目錄,如WWW服務。
/tmp:這是讓一般用戶或者正在執行的程序暫時放置文件的地方,任何人都能訪問,需要定時清理。

 

8、自學20條linux命令

答:

  1. shutdown -h now 關閉系統(1)
  2. date 顯示系統日期 
  3. ls -F 查看目錄中的文件 
  4. ls -l 顯示文件和目錄的詳細資料 
  5. ls -a 顯示隱藏文件 
  6. ls *[0-9]* 顯示包含數字的文件名和目錄名 
  7. find / -name file1 從 '/' 開始進入根文件系統搜索文件和目錄 
  8. find / -user user1 搜索屬於用戶 'user1' 的文件和目錄 
  9. find /home/user1 -name \*.bin 在目錄 '/ home/user1' 中搜索帶有'.bin' 結尾的文件 
  10. find /usr/bin -type f -atime +100 搜索在過去100天內未被使用過的執行文件 
  11. find /usr/bin -type f -mtime -10 搜索在10天內被創建或者修改過的文件 
  12. find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 結尾的文件並定義其權限 
  13. find / -xdev -name \*.rpm 搜索以 '.rpm' 結尾的文件,忽略光驅、捷盤等可移動設備 
  14. locate \*.ps 尋找以 '.ps' 結尾的文件 - 先運行 'updatedb' 命令 
  15. whereis halt 顯示一個二進制文件、源碼或man的位置 
  16. which halt 顯示一個二進制文件或可執行文件的完整路徑 
  17. mount /dev/hda2 /mnt/hda2 掛載一個叫做hda2的盤 - 確定目錄 '/ mnt/hda2' 已經存在 
  18. umount /dev/hda2 卸載一個叫做hda2的盤 - 先從掛載點 '/ mnt/hda2' 退出 
    fuser -km /mnt/hda2 當設備繁忙時強制卸載 
  19. umount -n /mnt/hda2 運行卸載操作而不寫入 /etc/mtab 文件- 當文件爲只讀或當磁盤寫滿時非常有用 
  20. mount /dev/fd0 /mnt/floppy 掛載一個軟盤 
  21. mount /dev/cdrom /mnt/cdrom 掛載一個cdrom或dvdrom 
  22. mount /dev/hdc /mnt/cdrecorder 掛載一個cdrw或dvdrom 
  23. mount /dev/hdb /mnt/cdrecorder 掛載一個cdrw或dvdrom 
  24. mount -o loop file.iso /mnt/cdrom 掛載一個文件或ISO鏡像文件 
  25. mount -t vfat /dev/hda5 /mnt/hda5 掛載一個Windows FAT32文件系統 
  26. mount /dev/sda1 /mnt/usbdisk 掛載一個usb 捷盤或閃存設備 
  27. mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 掛載一個windows網絡共享 
  28. cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合併一個文件的詳細說明文本,並將簡介寫入一個新文件中 
  29. cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合併一個文件的詳細說明文本,並將簡介寫入一個已有的文件中 
  30. grep Aug /var/log/messages 在文件 '/var/log/messages'中查找關鍵詞"Aug" 
  31. grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"開始的詞彙 
  32. grep [0-9] /var/log/messages 選擇 '/var/log/messages' 文件中所有包含數字的行
  33. cat file1 從第一個字節開始正向查看文件的內容 
  34. tac file1 從最後一行開始反向查看一個文件的內容 
  35. more file1 查看一個長文件的內容 
  36. less file1 類似於 'more' 命令,但是它允許在文件中和正向操作一樣的反向操作 
  37. head -2 file1 查看一個文件的前兩行 
  38. tail -2 file1 查看一個文件的最後兩行 
  39. tail -f /var/log/messages 實時查看被添加到一個文件中的內容  
  40. tar -cvf archive.tar file1 創建一個非壓縮的 tarball 
  41. tar -cvf archive.tar file1 file2 dir1 創建一個包含了 'file1', 'file2' 以及 'dir1'的檔案文件 
  42. tar -tf archive.tar 顯示一個包中的內容 
  43. tar -xvf archive.tar 釋放一個包 
  44. tar -xvf archive.tar -C /tmp 將壓縮包釋放到 /tmp目錄下 
  45. tar -cvfj archive.tar.bz2 dir1 創建一個bzip2格式的壓縮包 
  46. tar -xvfj archive.tar.bz2 解壓一個bzip2格式的壓縮包 
  47. tar -cvfz archive.tar.gz dir1 創建一個gzip格式的壓縮包 
  48. tar -xvfz archive.tar.gz 解壓一個gzip格式的壓縮包 
  49. zip file1.zip file1 創建一個zip格式的壓縮包 
  50. zip -r file1.zip file1 file2 dir1 將幾個文件和目錄同時壓縮成一個zip格式的壓縮包 
  51. unzip file1.zip 解壓一個zip格式壓縮包 

 

 

 

本日未解決的問題 暫無
本日開發收穫 瞭解了行業目前狀況;大致瞭解linux c開發流程  ;學會了簡單的linux命令和操作
其他

 

附錄:

//求1-n中含9的數的個數  
1 #include<stdio.h> 
  2 int main() 
  3 { 
  4         int i,j,a,n; 
  5             int count=0; 
  6                 printf("inout your number 'n':\n"); 
  7                     scanf("%d",&n); 
  8                         for(i=1;i<=n;i++) 
  9                       { 
 10                                a=i; 
 11                                  while(a!=0) 
 12                                   { 
 13                                  j=a%10; 
 14                                  a=a/10; 
 15                                 if(j==9) 
 16                                  { 
 17                                   count++; 
 18                                   } 
 19                                  } 
 20                           } 
 21                             printf("9 have:%d\n",count); 
 22                                 return 0; 
 23 }

 

//倒置字符串
 
 1 #include "stdio.h"
  2 #include "string.h"
  3 void main()
  4 {
  5 int i;
  6 printf("input string: \n");
  7 char str[20], c;
  8 scanf("%s",str);
  9 
 10 int n=strlen(str);
 11 
 12 for(i=0;i<n/2;i++)
 13 {                                                                                                                                                                       
 14 c=str[i];
 15 str[i]=str[n-i-1];
 16 str[n-i-1]=c;
 17 }
 18 printf("reverseString:\n");
 19 
 20 puts(str);
 21 
 22 }
~                                                                                                                                                                           
                                                                                                                                                                          

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章