精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>嵌入式開發>Linux下C編程基礎之實驗內容及小結

Linux下C編程基礎之實驗內容及小結

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

資料介紹

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

評論

查看更多

下載排行

本周

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

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費