天天看點

20191317王鵬宇學習筆記

知識點歸納總結:

主要描述了教材的教學範圍,目标讀者以及作為計算機科學工程專業教材的适宜性。内容主要包括Unix的曆史,Linux的開發以及各種版本,适用于Linux的各種平台與虛拟機,常用的Unix/Linux指令。并且給出了VirtralBox虛拟機和VMware虛拟機的安裝教程。

其中讓我最有收獲的就是教材給出了學習目标:

動态資料結構的應用

程序概念和程序管理

并發程式設計

定時器和定時功能

信号,信号處理和程序間通信

檔案系統

TCP/IP和網絡程式設計

還有部分Unix/Linux指令:

<code>Is: Is dirname</code>:列出CWD或目錄的内容。

<code>cd dirname</code>:更改目錄。

<code>pwd</code>:列印CWD的絕對路徑名。

<code>touch filename</code>:更改檔案名時間戳(如果檔案不存在,則建立檔案)

<code>cat filename</code>:顯示檔案内容。

<code>cp src dest</code>:複制檔案。

<code>mv src dest</code>:移動或重命名檔案。

<code>mkdir dirname</code>:建立目錄。

<code>rmdir dirname</code>:移除(空)目錄。

<code>rm filename</code>:移除或删除檔案。

<code>In olefile newfile</code>:在檔案之間建立連結。

<code>find</code>:搜尋檔案。

<code>grep</code>:搜尋檔案中包含模式的行。

<code>ssh</code>:登入到遠端主機。

<code>gzip filename</code>:将檔案壓縮為.gz檔案。

<code>gunzip filename.gz</code>:解壓.gz檔案。

<code>tar -zcvf file.tgz .</code>:從目前目錄建立壓縮tar檔案。

<code>tar -zxvf file.tgz .</code>:從.tgz檔案中解壓檔案。

<code>man</code>:顯示線上手冊頁。

<code>zip file.zip filenames</code>:将檔案壓縮為.zip檔案。

<code>unzip file.zip</code>:解壓.zip檔案。

實踐内容:openeuler系統的安裝:

參考網站

實踐截圖

20191317王鵬宇學習筆記

但是我發現這個系統是沒有界面的,是以操作起來會很麻煩,于是我又在網上找了一下如何安裝界面。

由于openeuler并沒有内置源,是以需要使用者自己安裝,都2021年了居然還有系統沒有内置源,需要使用者自己進行配置。

實踐截圖:

20191317王鵬宇學習筆記

然後需要進行GNOME桌面環境的安裝:

20191317王鵬宇學習筆記

但是在安裝界面的時候出現了一些錯誤:

Error: Failed to download metadata for repo 'osrepo_1': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried

後來經過在網上查找原因,終于解決了這個問題,原來是因為我在配置源的時候,因為沒辦法複制粘貼,隻能手動輸入,結果打錯了一個字母,導緻源失效。

後來經過修改終于配置成功:

20191317王鵬宇學習筆記
20191317王鵬宇學習筆記
20191317王鵬宇學習筆記

但是現在隻是成功下載下傳了gnome界面,接下來還需要設定gnome界面開機自啟。

20191317王鵬宇學習筆記

至此,gnome界面已經安裝完成,但是根據網上出現的衆多bug,這裡還不能直接重新開機,否則可能會遇到gdm無法登入的問題,根據大佬的測試,這個問題是由于 openEuler 的 gdm 的配置檔案不全導緻的。具體來說,是 /etc/gdm/Xsession 指向的 /etc/X11/Xsession 不存在。當然現在這個bug有沒有修複,我也不敢自己嘗試,是以隻能按照大佬的指導一步步做下來。

20191317王鵬宇學習筆記
20191317王鵬宇學習筆記

然後就變成了這樣:

20191317王鵬宇學習筆記
20191317王鵬宇學習筆記

可以很明顯的看出,在爆出'piix4_smbus 0000:00:07.3: SMBus Host Controller not enabled'這個錯誤之後,系統就卡在黑屏,不出現界面。

經過查找,以及網上出現同樣問題的文章,我猜想可能是系統運作記憶體以及最大存儲太小,但是ubuntu又一直試圖加載某個子產品導緻的。于是我重新設定了虛拟機的配置。最終變成了這樣:

20191317王鵬宇學習筆記

很好,成功解決了無法出現界面的問題,但是又出現了新的問題,這也算是一次進步。于是我又開始尋找為什麼沒有文字顯示。

20191317王鵬宇學習筆記

可以看出,界面是可以正常使用的,隻不過所有的中文都變成了很奇怪的方塊。

于是根據我的搜尋,原因可能是gnome界面不支援中文,改成英文就好了,根據文章的指導,成功将語言設定為英語。

20191317王鵬宇學習筆記
20191317王鵬宇學習筆記

可以看出這個問題也是成功解決,這波可真是把新手能踩的坑全給踩了一遍。而這才隻是第一章。

本章介紹了幾種常用的基于GUI的編輯器例如vim,gedit等,同時展示了如何使用EMACS來編譯執行C語言程式,還有C語言函數的調用以及程式在運作時堆棧的變化。makefile的編寫方法,如何使用GDB調試C語言程式。重點解釋了C語言結構體和指針的應用,包括連結清單,二叉樹等幾種比較常用的算法。還有檔案系統的相關操作。

其中讓我最有收獲的就是:

1,C語言程式在編譯過程中,需要生成可執行檔案,例如:'gcc t1.c'就會生成一個二進制可執行檔案a.out,而在linux中,cc連結到gcc,而gcc會把t1.c編譯成t1.s,随後t1.s會經過彙編器彙編成t1.o,再經過連接配接器,最終生成可執行檔案a.out。具體内容在教材的22-25頁
2,C語言程式在運作時堆棧的使用情況,具體内容在教材的27-34頁
3,C語言結構體與指針的應用,具體就是連結清單,二叉樹的查找,周遊,插入,删除操作。具體内容在教材53-77

還有部分Unix/Linux檔案系統操作指令規範:

mkdir路徑名:為給定的路徑名建立一個新目錄。

rmdir路徑名:如果目錄為空,則删除該目錄。

cd[路徑名]:将目前工作目錄更改為路徑名,如果沒有路徑名則更改為“/”。

ls[路徑名]:列出路徑名或目前工作目錄的目錄内容。

pwd:列印目前工作目錄的(絕對)路徑名。

creat路徑名:建立一個FILE節點。

rm路徑名:删除FILE節點。

save檔案名:将目前檔案系統樹儲存為檔案。

reload檔案名:從一個檔案構造一個檔案系統樹。

menu:顯示有效指令菜單。

quit:儲存檔案系統樹,然後終止程式。

實踐内容:EMACS的安裝與使用:

這裡我使用的是優麒麟linux系統,因為自帶軟體商店,可以直接下載下傳EMACS,比較友善:

20191317王鵬宇學習筆記
20191317王鵬宇學習筆記

使用emacs編寫第一個C語言程式:

20191317王鵬宇學習筆記
20191317王鵬宇學習筆記

真正開始使用之後才發現emacs沒有滑鼠點選功能,隻有一堆快捷鍵,使用起來有點麻煩,因為各種快捷鍵需要記。

在這裡貼幾種常用的快捷鍵:

C-x,C-f:ctrl+C再按一下ctrl+f可以查找或者建立新檔案。

C-x,d:ctrl+C再按一下d,可以根據目前檔案目錄進行查找。

C-x,C-s:ctrl+C再按一下ctrl+s,可以儲存修改的檔案

M-x,shell:就是alt+x然後輸入shell,可以調出shell指令行。

下面是C語言結構體的内容,在這之前我們資料結構課上已經重點講過這部分内容,是以在這裡也算是一種溫習。下面是基于連結清單實作的大數運算:

20191317王鵬宇學習筆記

<code>C+alt+T</code>:打開指令行。

<code>C+shift+T</code>:建立新标簽。

<code>alt+1/2/3</code>:切換标簽。

<code>history</code>:檢視輸入曆史。

<code>od</code>:檢視檔案。