色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開(kāi)發(fā)>Linux下C編程基礎(chǔ)之實(shí)驗(yàn)內(nèi)容及小結(jié)

Linux下C編程基礎(chǔ)之實(shí)驗(yàn)內(nèi)容及小結(jié)

2017-10-18 | rar | 0.3 MB | 次下載 | 1積分

資料介紹

1.實(shí)驗(yàn)?zāi)康?br />   通過(guò)指定指令的vi操作練習(xí),使讀者能夠熟練使用vi中的常見(jiàn)操作,并且熟悉vi的3種模式,如果讀者能夠熟練掌握實(shí)驗(yàn)內(nèi)容中所要求的內(nèi)容,則表明對(duì)vi的操作已經(jīng)很熟練了。
  2.實(shí)驗(yàn)內(nèi)容
 ?。?)在“/root”目錄下建一個(gè)名為“vi”的目錄。
  (2)進(jìn)入“vi”目錄。
 ?。?)將文件“/etc/inittab”復(fù)制到“vi”目錄下。
 ?。?)使用vi打開(kāi)“vi”目錄下的inittab。
  (5)設(shè)定行號(hào),指出設(shè)定initdefault(類(lèi)似于“id:5:initdefault”)的所在行號(hào)。
 ?。?)將光標(biāo)移到該行。
  (7)復(fù)制該行內(nèi)容。
  (8)將光標(biāo)移到最后一行行首。
 ?。?)粘貼復(fù)制行的內(nèi)容。
  (10)撤消第9步的動(dòng)作。
 ?。?1)將光標(biāo)移動(dòng)到最后一行的行尾。
 ?。?2)粘貼復(fù)制行的內(nèi)容。
 ?。?3)光標(biāo)移到“si::sysinit:/etc/rc.d/rc.sysinit”。
 ?。?4)刪除該行。
 ?。?5)存盤(pán)但不退出。
 ?。?6)將光標(biāo)移到首行。
 ?。?7)插入模式下輸入“Hello,this is vi world!”。
 ?。?8)返回命令行模式。
 ?。?9)向下查找字符串“0:wait”。
 ?。?0)再向上查找字符串“halt”。
 ?。?1)強(qiáng)制退出vi,不存盤(pán)。
  分別指出每個(gè)命令處于何種模式下?
  3.實(shí)驗(yàn)步驟
 ?。?)mkdir /root/vi
  (2)cd /root/vi
 ?。?)cp /etc/inittab 。/
 ?。?)vi 。/inittab
  (5):set nu(底行模式)
 ?。?)17《enter》(命令行模式)
 ?。?)yy
  (8)G
 ?。?)p
 ?。?0)u
 ?。?1)$
  (12)p
 ?。?3)21G
 ?。?4)dd
 ?。?5):w(底行模式)
  (16)1G
 ?。?7)i 并輸入“Hello,this is vi world!”(插入模式)
  (18)Esc
 ?。?9)/0:wait(命令行模式)
 ?。?0)?halt
  (21):q?。ǖ仔心J剑?br />   4.實(shí)驗(yàn)結(jié)果
  該實(shí)驗(yàn)的最終結(jié)果是對(duì)“/root/inittab”增加了一行復(fù)制的內(nèi)容:“id:5:initdefault”。
  3.7.2 用gdb調(diào)試程序的bug
  1.實(shí)驗(yàn)?zāi)康?br />   通過(guò)調(diào)試一個(gè)有問(wèn)題的程序,使讀者進(jìn)一步熟練使用vi操作,而且熟練掌握gcc編譯命令及gdb的調(diào)試命令,通過(guò)對(duì)有問(wèn)題程序的跟蹤調(diào)試,進(jìn)一步提高發(fā)現(xiàn)問(wèn)題和解決問(wèn)題的能力。這是一個(gè)很小的程序,只有35行,希望讀者認(rèn)真調(diào)試。
  2.實(shí)驗(yàn)內(nèi)容
 ?。?)使用vi編輯器,將以下代碼輸入到名為greet.c的文件中。此代碼的原意為輸出倒序main函數(shù)中定義的字符串,但結(jié)果顯示沒(méi)有輸出。代碼如下所示:
  #include 《stdio.h》
  int display1(char *string);
  int display2(char *string);
  int main ()
  {
  char string[] = “Embedded Linux”;
  display1 (string);
  display2 (string);
  }
  int display1 (char *string)
  {
  printf (“The original string is %s \n”, string);
  }
  int display2 (char *string1)
  {
  char *string2;
  int size,i;
  size = strlen (string1);
  string2 = (char *) malloc (size + 1);
  for (i = 0; i 《 size; i++)
  {
  string2[size - i] = string1[i];
  }
  string2[size+1] = ‘ ’;
  printf(“The string afterward is %s\n”,string2);
  }
 ?。?)使用gcc編譯這段代碼,注意要加上“-g”選項(xiàng)以方便之后的調(diào)試。
 ?。?)運(yùn)行生成的可執(zhí)行文件,觀察運(yùn)行結(jié)果。
  (4)使用gdb調(diào)試程序,通過(guò)設(shè)置斷點(diǎn)、單步跟蹤,一步步找出錯(cuò)誤所在。
  (5)糾正錯(cuò)誤,更改源程序并得到正確的結(jié)果。
  3.實(shí)驗(yàn)步驟
  (1)在工作目錄上新建文件greet.c,并用vi啟動(dòng):vi greet.c。
 ?。?)在vi中輸入以上代碼。
 ?。?)在vi中保存并退出,使用命令“:wq”。
  (4)用gcc編譯:gcc -g greet.c -o greet。
 ?。?)運(yùn)行g(shù)reet,使用命令“。/greet”,輸出為:
  The original string is Embedded Linux
  The string afterward is
  可見(jiàn),該程序沒(méi)有能夠倒序輸出。
  (6)啟動(dòng)gdb調(diào)試:gdb greet。
 ?。?)查看源代碼,使用命令“l(fā)”。
 ?。?)在30行(for循環(huán)處)設(shè)置斷點(diǎn),使用命令“b 30”。
  (9)在33行(printf函數(shù)處)設(shè)置斷點(diǎn),使用命令“b 33”。
 ?。?0)查看斷點(diǎn)設(shè)置情況,使用命令“info b”。
 ?。?1)運(yùn)行代碼,使用命令“r”。
 ?。?2)單步運(yùn)行代碼,使用命令“n”。
  (13)查看暫停點(diǎn)變量值,使用命令“p string2[size - i]”。
 ?。?4)繼續(xù)單步運(yùn)行代碼數(shù)次,并檢查string2[size-1]的值是否正確。
  (15)繼續(xù)程序的運(yùn)行,使用命令“c”。
 ?。?6)程序在printf前停止運(yùn)行,此時(shí)依次查看string2[0]、string2[1]…,發(fā)現(xiàn)string[0]沒(méi)有被正確賦值,而后面的賦值都是正確的,這時(shí),定位程序第31行,發(fā)現(xiàn)程序運(yùn)行結(jié)果錯(cuò)誤的原因在于“size-1”。由于i只能增到“size-1”,這樣string2[0]就永遠(yuǎn)不能被賦值而保持NULL,故不能輸出任何結(jié)果。
  (17)退出gdb,使用命令“q”。
 ?。?8)重新編輯greet.c,把其中的“string2[size - i] = string1[i]”改為“string2[size – i - 1] = string1[i];”即可。
  (19)使用gcc重新編譯:gcc -g greet.c -o greet。
 ?。?0)查看運(yùn)行結(jié)果:。/greet
  The original string is Embedded Linux
  The string afterward is xuniL deddedbmE
  這時(shí),輸出結(jié)果正確。
  4.實(shí)驗(yàn)結(jié)果
  將原來(lái)有錯(cuò)的程序經(jīng)過(guò)gdb調(diào)試,找出問(wèn)題所在,并修改源代碼,輸出正確的倒序顯示字符串的結(jié)果。
  3.7.3 編寫(xiě)包含多文件的makefile
  1.實(shí)驗(yàn)?zāi)康?br />   通過(guò)對(duì)包含多文件的makefile的編寫(xiě),熟悉各種形式的makefile,并且進(jìn)一步加深對(duì)makefile中用戶自定義變量、自動(dòng)變量及預(yù)定義變量的理解。
  2.實(shí)驗(yàn)過(guò)程
 ?。?)用vi在同一目錄下編輯兩個(gè)簡(jiǎn)單的hello程序,如下所示:
  #hello.c
  #include “hello.h”
  int main()
  {
  printf(“Hello everyone!\n”);
  }
  #hello.h
  #include 《stdio.h》
  (2)仍在同一目錄下用vi編輯makefile,且不使用變量替換,用一個(gè)目標(biāo)體實(shí)現(xiàn)(即直接將hello.c和hello.h編譯成hello目標(biāo)體)。然后用make驗(yàn)證所編寫(xiě)的makefile是否正確。
  (3)將上述makefile使用變量替換實(shí)現(xiàn)。同樣用make驗(yàn)證所編寫(xiě)的makefile是否正確。
 ?。?)編輯另一個(gè)makefile,取名為makefile1,不使用變量替換,但用兩個(gè)目標(biāo)體實(shí)現(xiàn)(也就是首先將hello.c和hello.h編譯為hello.o,再將hello.o編譯為hello),再用make的“-f”選項(xiàng)驗(yàn)證這個(gè)makefile1的正確性。
 ?。?)將上述makefile1使用變量替換實(shí)現(xiàn)。
  3.實(shí)驗(yàn)步驟
  (1)用vi打開(kāi)上述兩個(gè)代碼文件“hello.c”和“hello.h”。
 ?。?)在shell命令行中用gcc嘗試編譯,使用命令:“gcc hello.c –o hello”,并運(yùn)行hello可執(zhí)行文件查看結(jié)果。
  (3)刪除此次編譯的可執(zhí)行文件:rm hello。
  (4)用vi編輯makefile,如下所示:
  hello:hello.c hello.h
  gcc hello.c -o hello
 ?。?)退出保存,在shell中鍵入:make,查看結(jié)果。
 ?。?)再次用vi打開(kāi)makefile,用變量進(jìn)行替換,如下所示:
  OBJS :=hello.o
  CC :=gcc
  hello:$(OBJS)
  $(CC) $^ -o $@
  (7)退出保存,在shell中鍵入make,查看結(jié)果。
  (8)用vi編輯makefile1,如下所示:
  hello:hello.o
  gcc hello.o -o hello
  hello.o:hello.c hello.h
  gcc -c hello.c -o hello.o
 ?。?)退出保存,在shell中鍵入:make -f makefile1,查看結(jié)果。
 ?。?0)再次用vi編輯makefile1,如下所示:
  OBJS1 :=hello.o
  OBJS2 :=hello.c hello.h
  CC :=gcc
  hello:$(OBJS1)
  $(CC) $^ -o $@
  $(OBJS1):$(OBJS2)
  $(CC) -c $《 -o $@
  在這里請(qǐng)注意區(qū)別“$^”和“$《”。
 ?。?1)退出保存,在shell中鍵入make -f makefile1,查看結(jié)果。
  4.實(shí)驗(yàn)結(jié)果
  各種不同形式的makefile都能正確地完成其功能。
  3.7.4 使用autotools生成包含多文件的makefile
  1.實(shí)驗(yàn)?zāi)康?br />   通過(guò)使用autotools生成包含多文件的makefile,進(jìn)一步掌握autotools的使用方法。同時(shí),掌握Linux下安裝軟件的常用方法。
  2.實(shí)驗(yàn)過(guò)程
  (1)在原目錄下新建文件夾auto。
 ?。?)將上例的兩個(gè)代碼文件“hello.c”和“hello.h”復(fù)制到該目錄下。
  (3)使用autoscan生成configure.scan。
 ?。?)編輯configure.scan,修改相關(guān)內(nèi)容,并將其重命名為configure.in。
 ?。?)使用aclocal生成aclocal.m4。
  (6)使用autoconf生成configure。
 ?。?)使用autoheader生成config.h.in。
 ?。?)編輯makefile.am。
  (9)使用automake生成makefile.in。
 ?。?0)使用configure生成makefile。
  (11)使用make生成hello可執(zhí)行文件,并在當(dāng)前目錄下運(yùn)行hello查看結(jié)果。
  (12)使用make install將hello安裝到系統(tǒng)目錄下,并運(yùn)行,查看結(jié)果。
 ?。?3)使用make dist生成hello壓縮包。
 ?。?4)解壓hello壓縮包。
 ?。?5)進(jìn)入解壓目錄。
 ?。?6)在該目錄下安裝hello軟件。
  3.實(shí)驗(yàn)步驟
 ?。?)mkdir 。/auto。
 ?。?)cp hello.* 。/auto(假定原先在“hello.c”文件目錄下)。
 ?。?)命令:autoscan。
 ?。?)使用vi編輯configure.scan為:
  # -*- Autoconf -*-
  # Process this file with autoconf to produce a configure script.
  AC_PREREQ(2.59)
  AC_INIT(hello, 1.0)
  AM_INIT_AUTOMAKE(hello,1.0)
  AC_CONFIG_SRCDIR([hello.h])
  AC_CONFIG_HEADER([config.h])
  # Checks for programs.
  AC_PROG_CC
  # Checks for libraries.
  # Checks for header files.
  # Checks for typedefs, structures, and compiler characteristics.
  # Checks for library functions.
  AC_OUTPUT(makefile)
  (5)保存退出,并重命名為configure.in。
 ?。?)運(yùn)行:aclocal。
 ?。?)運(yùn)行:autoconf,并用ls查看是否生成了configure可執(zhí)行文件。
  (8)運(yùn)行:autoheader。
 ?。?)用vi編輯makefile.am文件為:
  AUTOMAKE_OPTIONS=foreign
  bin_PROGRAMS=hello
  hello_SOURCES=hello.c hello.h
 ?。?0)運(yùn)行:automake,然后運(yùn)行automake –a。
 ?。?1)運(yùn)行:。/configure。
 ?。?2)運(yùn)行:make。
 ?。?3)運(yùn)行:。/hello,查看結(jié)果是否正確。
 ?。?4)運(yùn)行:make install。
 ?。?5)運(yùn)行:hello,查看結(jié)果是否正確。
  (16)運(yùn)行:make dist。
 ?。?7)在當(dāng)前目錄下解壓hello-1.0.tar.gz:tar –zxvf hello-1.0.tar.gz。
 ?。?8)進(jìn)入解壓目錄:cd 。/hello-1.0。
  (19)下面開(kāi)始Linux下常見(jiàn)的安裝軟件步驟:。/configure。
 ?。?0)運(yùn)行:make。
  (21)運(yùn)行:。/hello(在正常安裝時(shí)這一步可省略)。
 ?。?2)運(yùn)行:make install。
  (23)運(yùn)行:hello,查看結(jié)果是否正確。
  4.實(shí)驗(yàn)結(jié)果
  能夠正確使用autotools生成makefile,并且能夠成功安裝短小的hello軟件。
?
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 男男gaygay拳头| 亚洲香蕉视频在线播放| 色AV色婷婷96人妻久久久| 无码乱人伦一区二区亚洲| 亚洲午夜精品A片久久不卡蜜桃| 97精品国产亚洲AV高清| 高龄熟女50P| 久久黄色精品视频| 日本人bbwbbwbbwbbw| 亚洲欧美精品无码大片在线观看 | 亚洲AV人无码综合在线观看蜜桃| 最新亚洲人成网站在线影院| 大陆老熟女60岁| 久久黄色免费网站| 上原结衣快播| 最新亚洲中文字幕在线观看| 国产精品久久久久久久伊一| 媚药调教被撑到合不拢h| 我要色色网| 97视频在线观看免费播放| 国产亚洲精品久久久999无毒| 欧美多人群p刺激交换电影| 亚洲国产在线综合018| 啊好大好厉害好爽真骚| 精品亚洲一区二区三区在线播放| 青柠视频在线观看高清HD| 亚洲男人天堂网| 成片免费观看视频在线网| 久久vs国产| 我的家庭女教师| 中文字幕乱码亚洲无线三区| 国产精品免费大片| 欧美日韩高清一区| 诱受H嗯啊巨肉各种play| 国产精品自拍| 强奷乱码中文字幕熟女免费| 伊人久久网国产伊人| 国产精品人妻在线观看| 秋霞久久久久久一区二区| 中文字幕乱码一区AV久久| 国产这里有精品|