Linux環(huán)境及開(kāi)發(fā)工具

      網(wǎng)友投稿 687 2025-04-01

      @TOC

      零、前言

      本章主要將解學(xué)習(xí)軟件包的概念和yum工具以及vim編輯器的使用操作

      一、Linux軟件包管理器yum

      1、yum介紹

      概念:

      yum(Yellow dog Updater, Modified)是Linux下非常常用的一種包管理器

      Linux上如何安裝軟件:

      1.源代碼安裝(麻煩)

      2.rpm包安裝(類(lèi)似windows上的安裝程序)

      3.yum命令行(可以幫助搜索,下載,安裝,解決軟件依賴(lài)關(guān)系)

      什么是軟件包:

      安裝軟件通常的辦法是下載到程序的源代碼, 并進(jìn)行編譯, 得到可執(zhí)行程序,而軟件包是把一些軟件提前編譯好,從服務(wù)器上獲取后可以直接進(jìn)行安裝

      注:軟件包和軟件包管理器, 就好比 “App” 和 “應(yīng)用商店” 這樣的關(guān)系

      2、rzsz

      注:首先在 root 權(quán)限下使用 yum install -y lrzsz 命令,進(jìn)行安裝 rzsz 這個(gè)工具

      rz 命令:

      windows 機(jī)器和遠(yuǎn)端的 Linux 機(jī)器通過(guò) XShell 傳輸文件,使用指令 rz 則可以進(jìn)行上傳本地文件了

      示圖:

      sz + 文件命令:

      從linux終端將文件發(fā)送至本地 windows

      示圖:

      注: yum 的所有操作必須保證主機(jī)(虛擬機(jī))網(wǎng)絡(luò)暢通,可以通過(guò) ping 指令查看網(wǎng)絡(luò)狀況

      ping www.baidu.com

      2、yum工具的基本操作

      1)查看軟件包

      命令:

      yum list

      功能:

      羅列出當(dāng)前一共有哪些軟件包

      注:包的數(shù)目非常多, 可以使用 grep 命令篩選出需要的包

      示例:

      注意:

      軟件包名稱(chēng): 主版本號(hào).次版本號(hào).源程序發(fā)行號(hào)-軟件包的發(fā)行號(hào).主機(jī)平臺(tái).cpu架構(gòu)

      “x86_64” 后綴表示64位系統(tǒng)的安裝包, “i686” 后綴表示32位系統(tǒng)安裝包. 選擇包時(shí)要和系統(tǒng)匹配

      “el7” 表示操作系統(tǒng)發(fā)行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6

      最后一列, base 表示的是 “軟件源” 的名稱(chēng), 類(lèi)似于 “小米應(yīng)用商店”, “華為應(yīng)用商店” 這樣的概念

      2)安裝軟件

      命令:

      sudo yum install 名稱(chēng)

      常用選項(xiàng):

      -y :表示在找到后確認(rèn)進(jìn)行安裝

      注意:

      一般需要 sudo 或者切到 root 賬戶(hù)下才能完成(需要向系統(tǒng)目錄中寫(xiě)入內(nèi)容)

      無(wú)法多臺(tái)服務(wù)器同時(shí)使用 yum

      3)卸載軟件

      命令:

      sudo yum remove 名稱(chēng)

      注:也需要 root 權(quán)限

      二、 Linux開(kāi)發(fā)工具vim

      1、vim的介紹

      概念:

      vi/vim 的區(qū)別簡(jiǎn)單點(diǎn)來(lái)說(shuō),它們都是多模式編輯器,不同的是vim是vi的升級(jí)版本,它不僅兼容vi的所有指令,而且還有一些新的特性在里面(類(lèi)似C和C++的關(guān)系),Linux自帶 vim ,使用較多

      基本概念:

      vim的常用三種模式,分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)

      正常/命令模式:

      可以控制屏幕光標(biāo)的移動(dòng),對(duì)文本進(jìn)行字符、字或行的刪除,移動(dòng)復(fù)制某區(qū)段等操作

      插入模式:

      只有在Insert mode下,才可以進(jìn)行文字輸入

      底行模式:

      文件保存或退出,也可以進(jìn)行文件替換,使用命令等操作

      2、vim基本操作

      vim 編輯文件命令:vim 文本名

      注:進(jìn)入vim之后,是處于[正常模式]

      [正常模式]切換至[插入模式]

      按「i」進(jìn)入插入模式后,是從光標(biāo)當(dāng)前位置開(kāi)始輸入文件 按「a」進(jìn)入插入模式后,是從目前光標(biāo)所在位置的下一個(gè)位置開(kāi)始輸入文字 按「o」進(jìn)入插入模式后,是插入新的一行,從行首開(kāi)始輸入文字

      [正常模式]切換至[底行模式]

      「shift + ;」 其實(shí)就是輸入「:」

      注:在其他模式下都可以通過(guò)按 Esc 退回正常模式

      退出vim及保存文件:

      在[正常模式]下按一下「:」冒號(hào)鍵進(jìn)入底行模式 : w (保存當(dāng)前文件) : wq (輸入「wq」,存盤(pán)并退出vim) : q! (輸入q!,不存盤(pán)強(qiáng)制退出vim)

      3、vim正常模式命令集

      移動(dòng)光標(biāo):

      上下左右:正規(guī)的vim是用小寫(xiě)英文字母「h」、「j」、「k」、「l」分別控制光標(biāo)左、下、上、右移一格,也可以直接用鍵盤(pán)上的光標(biāo)來(lái)上下左右移動(dòng) 按「w」:光標(biāo)跳到下個(gè)字的開(kāi)頭 按「e」:光標(biāo)跳到下個(gè)字的字尾 按「b」:光標(biāo)回到上個(gè)字的開(kāi)頭 按「$」:移動(dòng)到光標(biāo)所在行的“行尾” 按「^」:移動(dòng)到光標(biāo)所在行的“行首” 按「n+l」:光標(biāo)移到該行的第n個(gè)位置 按[gg]:光標(biāo)移到文本開(kāi)始 按[shift+g]:光標(biāo)移到文本末端 按[n+shift+g]:光標(biāo)移到文本第n行

      刪除文字:

      「x」:每按一次,刪除光標(biāo)所在位置的一個(gè)字符 「n+x」:刪除光標(biāo)所在位置的“后面(包含自己在內(nèi))”n個(gè)字符 「X」:大寫(xiě)的X,每按一次,刪除光標(biāo)所在位置的“前面”一個(gè)字符 「n+X」:表示刪除光標(biāo)所在位置的“前面”n個(gè)字符 「dd」:剪切光標(biāo)所在行 「n+dd」:從光標(biāo)所在行開(kāi)始剪切n行 //注意:dd與“p”配能完成剪切粘貼功能

      復(fù)制:

      「yw」:將光標(biāo)所在之處到字尾的字符復(fù)制到緩沖區(qū)中 「n+yw」:復(fù)制n個(gè)字到緩沖區(qū) 「yy」:復(fù)制光標(biāo)所在行到緩沖區(qū) 「n+yy」:表示拷貝從光標(biāo)所在的該行“往下數(shù)”n行文字 「p」:將緩沖區(qū)內(nèi)的字符貼到光標(biāo)所在位置 //注意:y相關(guān)的操作與“p”配能完成復(fù)制粘貼

      替換:

      「r」:輸入需要改成的字符,替換光標(biāo)所在處的字符 「R」:切換成替換模式,輸入可以替換光標(biāo)所到之處的字符,按下「ESC」鍵退回正常模式 「u」:如果您誤執(zhí)行一個(gè)命令,可以馬上按下「u」,回到上一個(gè)操作,按多次“u”可以執(zhí)行多次回復(fù) 「ctrl + r」: 撤銷(xiāo)的恢復(fù)

      4、vim底行模式命令集

      注:先按「ESC」鍵確定您已經(jīng)處于正常模式,再按「:」冒號(hào)即可進(jìn)入底行模式

      列出行號(hào):

      「set nu」: 輸入「set nu」后,會(huì)在文件中的每一行前面列出行號(hào)跳到文件中的某一行 「set nonu」: 輸入「set nonu」后會(huì)取消文件中 的行號(hào) 「#」:「#」號(hào)表示一個(gè)數(shù)字,在冒號(hào)后輸入一個(gè)數(shù)字,再按回車(chē)鍵就會(huì)跳到該行了

      查找字符:

      「/關(guān)鍵字」:先按「/」鍵,再輸入您想尋找的字符,如果第一次找的關(guān)鍵字不是您想要的,可以一直按「n」會(huì)往后尋找到您要的關(guān)鍵字為止(向下查找) 「?關(guān)鍵字」:先按「?」鍵,再輸入您想尋找的字符,如果第一次找的關(guān)鍵字不是您想要的,可以一直按「n」會(huì)往前尋找到您要的關(guān)鍵字為止(向上查找)

      保存退出:

      「w」: 在冒號(hào)輸入字母「w」就可以將文件保存起來(lái) 「q」:按「q」就是退出,如果無(wú)法離開(kāi)vim,可以在「q」后跟一個(gè)「!」強(qiáng)制離開(kāi)vim 「wq」:一般建議離開(kāi)時(shí),搭配「w」一起使用,這樣在退出的時(shí)候還可以保存文件

      替換:

      「%s/要被替換的字符或字符串/要替換成的字符或字符串/g」:將對(duì)應(yīng)字符或字符串替換成對(duì)應(yīng)字符或字符串(g表示全部)

      更改:

      「~」:從光標(biāo)所在行將單詞大寫(xiě)轉(zhuǎn)小寫(xiě),小寫(xiě)轉(zhuǎn)大寫(xiě)

      打開(kāi)多個(gè)窗口:

      vs + 文件名:(如果沒(méi)有那么就會(huì)創(chuàng)建一個(gè),如果有就會(huì)打開(kāi)對(duì)應(yīng)的文件)

      多文件切換:

      ctrl + w(雙擊):切換文件(注:在多窗口的情況下)

      特別命令:

      vim test.c +10 //打開(kāi)test.c文件將光標(biāo)定位到第10行 !vim //打開(kāi)歷史上最近一次執(zhí)行vim的操作

      5、vim操作總結(jié)

      簡(jiǎn)圖:

      全圖:

      6、簡(jiǎn)單vim配置

      配置文件的位置:

      在目錄 /etc/ 下面,有個(gè)名為vimrc的文件,這是系統(tǒng)中公共的vim配置文件,對(duì)所有用戶(hù)都有效,而在每個(gè)用戶(hù)的主目錄下,都可以自己建立私有的配置文件,命名為:“.vimrc”。例如,/root目錄下,通常已經(jīng)存在一個(gè).vimrc文件,如果不存在,則創(chuàng)建,切換用戶(hù)成為自己執(zhí)行 su ,進(jìn)入自己的主工作目錄,執(zhí)行 cd ~打開(kāi)自己目錄下的.vimrc文件,執(zhí)行 vim .vimrc 進(jìn)行配置

      示圖:

      常用配置選項(xiàng):

      設(shè)置語(yǔ)法高亮: syntax on 顯示行號(hào): set nu 設(shè)置縮進(jìn)的空格數(shù)為4: set shiftwidth=4

      注意:

      建議使用網(wǎng)絡(luò)上已經(jīng)配置好的vim,學(xué)習(xí)教程進(jìn)行下載就行了

      一般vimrc在每一個(gè)用戶(hù)下都有一個(gè),彼此之間互不影響

      三、Linux編譯器-gcc/g++

      1、程序生成過(guò)程

      注:以gcc為示例展示過(guò)程

      語(yǔ)法:

      gcc [選項(xiàng)] 要編譯的文件 [選項(xiàng)] [目標(biāo)文件]

      1)預(yù)處理

      功能主要包括:

      將源文件進(jìn)行宏定義替換,文件包含展開(kāi),條件編譯處理,去注釋等

      示例:

      gcc –E hello.c –o hello.i

      示圖:

      注:

      選項(xiàng)“-E”的作用是讓 gcc 在預(yù)處理結(jié)束后停止編譯過(guò)程

      選項(xiàng)“-o”是指目標(biāo)文件,“.i”文件為已經(jīng)過(guò)預(yù)處理的C原始程序(臨時(shí)文件)

      2)編譯

      功能主要包括:

      首先 gcc 檢查代碼的規(guī)范性、是否有語(yǔ)法錯(cuò)誤;在檢查無(wú)誤后, gcc 把代碼翻譯成匯編語(yǔ)言

      實(shí)例:

      gcc –S hello.i –o hello.s

      示圖:

      注:

      “-S”選項(xiàng)來(lái)進(jìn)行查看,該選項(xiàng)只進(jìn)行編,生成匯編代碼

      3)匯編

      功能主要包括:

      匯編階段對(duì)全局變量生成符號(hào)表;把編譯階段生成的“.s”文件轉(zhuǎn)成目標(biāo)文件(由匯編指令轉(zhuǎn)成二進(jìn)制指令)

      示例:

      gcc –c hello.s –o hello.o

      示圖:

      注:

      使用選項(xiàng)“-c”就可看到匯編代碼已轉(zhuǎn)化為“.o”的二進(jìn)制目標(biāo)代碼了

      4)鏈接

      功能主要包括:

      合并段表,合并符號(hào)表以及符號(hào)表的重定位;每個(gè)目標(biāo)文件由鏈接器捆綁在一起,形成一個(gè)單一而完整的可執(zhí)行程序

      示例:

      gcc hello.o –o hello

      示圖:

      2、函數(shù)庫(kù)

      概念:

      在上面的C程序中并沒(méi)有定義“printf”的函數(shù)實(shí)現(xiàn),且在預(yù)編譯中包含的“stdio.h”中也只有該函數(shù)的聲明,而沒(méi)有定義函數(shù)的實(shí)現(xiàn),但是系統(tǒng)把這些函數(shù)實(shí)現(xiàn)都被放入到名為 libc.so.6 的庫(kù)文件中去了,在沒(méi)有特別指定時(shí) gcc 會(huì)到系統(tǒng)默認(rèn)的搜索路徑“/usr/lib”下進(jìn)行查找,也就是鏈接到 libc.so.6 庫(kù)函數(shù)中去,這樣就能間接實(shí)現(xiàn)函數(shù)“printf”了,而這也就是鏈接的作用

      分類(lèi):

      函數(shù)庫(kù)一般分為靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)兩種

      靜態(tài)庫(kù):

      指編譯鏈接時(shí),把庫(kù)文件的代碼全部加入到可執(zhí)行文件中,因此生成的文件比較大,但在運(yùn)行時(shí)也就不再需要庫(kù)文件了,其后綴名一般為“.a”

      動(dòng)態(tài)庫(kù):

      在編譯鏈接時(shí)并沒(méi)有把庫(kù)文件的代碼加入到可執(zhí)行文件中,而是在程序執(zhí)行時(shí)由運(yùn)行時(shí)鏈接文件加載庫(kù),這樣可以節(jié)省系統(tǒng)的開(kāi)銷(xiāo),一般后綴名為“.so”

      注: gcc 在編譯時(shí)默認(rèn)使用動(dòng)態(tài)庫(kù),可以通過(guò) file 命令查看文件信息

      示圖:

      總結(jié):

      Linux環(huán)境及開(kāi)發(fā)工具

      以動(dòng)態(tài)庫(kù)鏈接方式生成的可執(zhí)行程序體積比較小,比較節(jié)省系統(tǒng)資源,缺點(diǎn)是一旦庫(kù)缺失,所以依賴(lài)的程序都不可運(yùn)行

      而如果是以靜態(tài)庫(kù)鏈接方式生成的可執(zhí)行程序體積比較大,因?yàn)樗麜?huì)將庫(kù)里面的代碼拷貝至可執(zhí)行程序,缺點(diǎn)是程序的體積比較大,浪費(fèi)系統(tǒng)空間資源,但是如果庫(kù)缺失不影響程序運(yùn)行

      gcc選項(xiàng)總結(jié):

      -E 只激活預(yù)處理,這個(gè)不生成文件,你需要把它重定向到一個(gè)輸出文件里面 -S 編譯到匯編語(yǔ)言不進(jìn)行匯編和鏈接 -c 編譯到目標(biāo)代碼 -o 文件輸出到 文件 -static 此選項(xiàng)對(duì)生成的文件采用靜態(tài)鏈接 -g 生成調(diào)試信息。GNU 調(diào)試器可利用該信息 -shared 此選項(xiàng)將盡量使用動(dòng)態(tài)庫(kù),所以生成文件比較小,但是需要系統(tǒng)由動(dòng)態(tài)庫(kù) -O0 -O1 -O2 -O3 編譯器的優(yōu)化選項(xiàng)的4個(gè)級(jí)別,-O0表示沒(méi)有優(yōu)化,-O1為缺省值,-O3優(yōu)化級(jí)別最高 -w 不生成任何警告信息 -Wall 生成所有警告信息(默認(rèn)生成)

      四、Linux調(diào)試器-gdb

      1、背景及概念

      相關(guān)概念:

      程序的發(fā)布方式有debug模式和release模式

      Linux gcc/g++編譯鏈接出來(lái)的可執(zhí)行程序默認(rèn)是release模式

      gdb 是 Linux 里的調(diào)試器,想調(diào)試必須在源代碼生成可執(zhí)行程序的時(shí)候加上 -g 選項(xiàng)

      為什么要有debug和release:

      在程序開(kāi)發(fā)時(shí)程序員遇到bug需要調(diào)試,而調(diào)試需要在程序里內(nèi)置調(diào)試信息

      而對(duì)于發(fā)布面向的是用戶(hù),用戶(hù)不需要調(diào)試信息

      示圖:

      2、調(diào)試命令

      示例:

      #include int Sum(int num) { int i=1,sum=0; for(;i<=num;i++) { sum+=i; } return sum; } int main() { int num=100; int sum=Sum(num); printf("%d\n",sum); return 0; }

      使用:

      gdb +文件名:進(jìn)入調(diào)試 ctrl + d 或 quit/q :退出調(diào)試

      展示:

      list/l 行號(hào):顯示binFile源代碼,接著上次的位置往下列,每次列10行 list/l 函數(shù)名:列出某個(gè)函數(shù)的源代碼 info break/ info b :查看斷點(diǎn)信息 print/p:打印表達(dá)式的值,通過(guò)表達(dá)式可以修改變量的值或者調(diào)用函數(shù) display 變量名:跟蹤查看一個(gè)變量,每次停下來(lái)都顯示它的值 undisplay:取消對(duì)先前設(shè)置的那些變量的跟蹤 info(i) locals:查看當(dāng)前棧幀局部變量的值 breaktrace(或bt):查看各級(jí)函數(shù)調(diào)用及參數(shù)

      示圖:

      修改:

      set var:修改變量的值

      斷點(diǎn):

      break/b 行號(hào):在某一行設(shè)置斷點(diǎn) break 函數(shù)名:在某個(gè)函數(shù)開(kāi)頭設(shè)置斷點(diǎn) delete breakpoints/d:刪除所有斷點(diǎn) delete breakpoints n/d n:刪除序號(hào)為n的斷點(diǎn) disable breakpoints/disable:禁用斷點(diǎn) enable breakpoints/enable:?jiǎn)⒂脭帱c(diǎn)

      示圖:

      注:禁用斷點(diǎn)的作用是在使用斷點(diǎn)后調(diào)試無(wú)誤用來(lái)記錄已經(jīng)調(diào)試過(guò)

      執(zhí)行:

      run/r:從開(kāi)始連續(xù)而非單步執(zhí)行程序(從新運(yùn)行,有斷點(diǎn)運(yùn)行到第一個(gè)斷點(diǎn),否則運(yùn)行完畢) next/n:?jiǎn)螚l執(zhí)行 continue/c:從當(dāng)前位置開(kāi)始連續(xù)而非單步執(zhí)行程序(執(zhí)行到下一個(gè)斷點(diǎn)處) step/s:進(jìn)入函數(shù)調(diào)用 finish:執(zhí)行到當(dāng)前函數(shù)返回,然后挺下來(lái)等待命令 until X行號(hào):執(zhí)行跳至X行

      示圖:

      五、Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile

      1、背景及概念

      一個(gè)工程中的源文件不計(jì)數(shù),其按類(lèi)型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來(lái)指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作

      make是一條命令,makefile是一個(gè)文件,兩個(gè)搭配使用,完成項(xiàng)目自動(dòng)化構(gòu)建

      make是一個(gè)命令工具,是一個(gè)解釋makefile中指令的命令工具,一般來(lái)說(shuō),大多數(shù)的IDE都有這個(gè)命令

      makefile帶來(lái)的好處就是“自動(dòng)化編譯”,一旦寫(xiě)好,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編譯,極大的提高了軟件開(kāi)發(fā)的效率

      2、使用及原理

      確定目標(biāo)文件和源文件的依賴(lài)關(guān)系,有了依賴(lài)關(guān)系還需要依賴(lài)方法(用來(lái)確定具體如何執(zhí)行生成目標(biāo)文件)

      示例:

      注意:

      依賴(lài)方法快捷寫(xiě)法示例:gcc -o $^ $@

      @

      :對(duì)應(yīng)的是目標(biāo)文件;

      @:對(duì)應(yīng)的是目標(biāo)文件;

      @:對(duì)應(yīng)的是目標(biāo)文件;^:表示依賴(lài)文件列表

      執(zhí)行過(guò)程/原理:

      在默認(rèn)的方式下只輸入make命令,則會(huì)在當(dāng)前目錄下找名字叫“Makefile”或“makefile”的文件

      如果找到,它會(huì)找文件中的第一個(gè)目標(biāo)文件(target),在上面的例子中,它會(huì)找到“test”這個(gè)文件,并把這個(gè)文件作為最終的目標(biāo)文件

      如果test文件不存在,或是test所依賴(lài)的后面的依賴(lài)文件的文件修改時(shí)間要比這個(gè)文件新,那么它就會(huì)執(zhí)行后面所定義的命令來(lái)生成test這個(gè)文件

      如果test所依賴(lài)的文件不存在,那么make會(huì)在當(dāng)前文件中找目標(biāo)為以依賴(lài)文件的依賴(lài)性,如果找到則再根據(jù)那一個(gè)規(guī)則生成依賴(lài)文件

      這就是整個(gè)make的依賴(lài)性,make會(huì)一層又一層地去找文件的依賴(lài)關(guān)系,直到最終編譯出第一個(gè)目標(biāo)文件

      在找尋的過(guò)程中,如果出現(xiàn)錯(cuò)誤,比如最后被依賴(lài)的文件找不到,那么make就會(huì)直接退出,并報(bào)錯(cuò),而對(duì)于所定義的命令的錯(cuò)誤,或是編譯不成功,make根本不理

      make只管文件的依賴(lài)性,即如果在找了依賴(lài)關(guān)系之后,之后如果還寫(xiě)有目標(biāo)文件都不會(huì)進(jìn)行生成

      項(xiàng)目清理:

      像clean這種,沒(méi)有被第一個(gè)目標(biāo)文件直接或間接關(guān)聯(lián),那么它后面所定義的命令將不會(huì)被自動(dòng)執(zhí)行,需要顯示make執(zhí)行,即命令“make clean”以此來(lái)清除所有的目標(biāo)文件,以便重編譯

      對(duì)于clean這種目標(biāo)文件,我們將它設(shè)置為偽目標(biāo)(用 .PHONY 修飾),偽目標(biāo)的特性是總是可以被執(zhí)行(可以多次執(zhí)行)

      示圖:

      Linux

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Excel2007如何分離數(shù)據(jù)
      下一篇:Excel如何做云文檔?超詳細(xì)教程帶你了解
      相關(guān)文章
      亚洲视频日韩视频| 亚洲av日韩av激情亚洲| 亚洲精品福利在线观看| 久久夜色精品国产嚕嚕亚洲av| 亚洲无码在线播放| 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲AV无码一区二区乱子伦| 亚洲中文字幕无码久久2017| 伊人久久亚洲综合| 亚洲视频在线一区二区| 亚洲成a人无码av波多野按摩| 国产精品亚洲一区二区三区 | 风间由美在线亚洲一区| 亚洲码和欧洲码一码二码三码| 亚洲日本中文字幕天天更新| 亚洲国产精品久久久久秋霞小| 亚洲午夜理论片在线观看| 亚洲精品免费网站| 亚洲一线产品二线产品| 亚洲AV综合色区无码一二三区| 亚洲精品理论电影在线观看| 国产精品亚洲一区二区三区久久 | 国产精品亚洲二区在线| 亚洲国产中文字幕在线观看| 亚洲日本韩国在线| 亚洲日韩一页精品发布| 国产亚洲成AV人片在线观黄桃| 亚洲AV日韩AV永久无码绿巨人| 亚洲最大福利视频网站| 亚洲国产成人精品无码一区二区| 国产精品亚洲片在线va| 亚洲欧美日韩一区二区三区在线| 小说专区亚洲春色校园| 国产亚洲精久久久久久无码AV| 国产亚洲精品岁国产微拍精品| 久久精品国产亚洲AV大全| 亚洲av无码电影网| 亚洲AV无码片一区二区三区 | 亚洲片一区二区三区| 亚洲色欲久久久综合网东京热| 无码欧精品亚洲日韩一区|