第四次试验eLinux系统下简单编程实验指导
- 格式:doc
- 大小:455.50 KB
- 文档页数:8
《操作系统》实验报告实验序号:实验四实验项目名称:实验04 Linux 多进程编程学号1207022103 姓名陈华荣专业、班网络工程实验地点实1-311 指导教师李桂森实验时间2014.10.26一、实验目的及要求1.通过本实验的学习,使学生掌握Linux多进程编程的基本方法。
2.实验内容:利用Linux多进程实现题目所要求的功能。
3.以学生自主训练为主的开放模式组织教学二、实验设备(环境)及要求PC机三、实验内容与步骤1、编写一个显示“HELLO”的c语言程序,并利用GCC编译,然后运行此程序。
(提示:若没有gcc,需先安装gcc编译程序)指令:Apt-get install updateApt-get install gccCd /home/normaluesrTouch helloworld.cVim helloeorld.c在helloworld里编辑进:#include<stdio.h>Int main(){Printf(“helloworld”);Return 0;}然后用gcc进行编译运行:或者直接2、进程的创建:编制一程序,利用系统调用fork()创建两个子进程。
程序运行时,系统中有一个父进程和两个子进程活动,分别让他们显示“A”、“B”和“C”,分析程序运行结果。
3、用ctrl+alt+F2切换到第二个终端(tty2)并使用另外一个用户登录(可利用第二个实验创建的用户登录),然后使用who命令查看用户登录情况。
用ctrl+alt+F1切换到第二个终端(tty1),修改第二步的程序,在每个进程退出前都加上一个sleep(20)的函数来延缓进程的退出,然后运行此程序,立即切换到tty2,使用ps -a命令查看系统运行的进程,观察程序创建的进程都有哪些?pid是多少?4、进程的管道通信:编制一程序,使用系统调用pipe()建立一管道,两个子进程P1和P2分别向管道各写一句话,父进程则从管道中读取出来并显示在屏幕。
嵌入式操作系统实验指导书目录实验一常用命令的使用实验二 vi编辑器实验三 shell编程(一)实验四 shell编程(二)实验五常用开发工具实验六 Linux环境编程(一)实验七 Linux环境编程(二)实验八系统及网络管理实验一常用命令的使用班级:姓名:学号:上机时间:任课教师:实验教师:实验成绩:一、实验目的1.掌握Linux的一般命令格式。
2.掌握有关文件和目录操作的常用命令。
3.掌握有关进程操作的常用命令。
4.熟练使用man命令。
二、实验任务1.正确登录和退出系统。
2.熟悉data,cal,who,echo,clear命令。
3.在用户主目录下对文件进行操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。
4.对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。
5.利用man显示date,echo等命令的手册页。
三、实验注意事项实验环境与系统是共用设施,请不要在系统内做对系统或对其他用户不安全的事情。
要求每个同学登录后系统后,要在主目录(/home/student)下创建一个属于自己的子目录(以自己(拼音)名字或学号)。
以后所有工作都要在自己的目录内进行。
建议以后的实验都在同台计算机上做,这样可以保持连续性。
四、实验内容:1.登录进入系统。
开机,选择 VMware Workstation 进入,再选择 Ubuntu 登陆窗口,输入用户名: student ,输入密码: 111111 ,进入Ubuntu图形桌面环境。
2.使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。
要启动一个终端,可以选择在窗口左侧点击终端按钮。
在终端提示符下输入:date↲显示: 2015年 10月 15日星期四 08:31:50 CST 。
在终端提示符下输入:who ↲显示: student pst/1 2015-10-15 08:22(:0) 。
实验报告4课程名称:Linux基础实验名称:Linux C语言编程和调试学生姓名:班级:学号:指导老师:钱振江成绩:一、实验目的1.掌握Linux环境下C程序的编辑、编译、运行等操作;2.掌握多文件的编译及连接;3.初步掌握gdb调试方法;二、实验任务与要求1.在Linux环境下C程序的编辑、编译与运行;2.多文件的编译及连接;3.应用gdb调试程序;4.随机数的应用;三、实验工具与准备计算机PC机,Linux Ubuntu操作系统四、实验步骤与操作指导1.调试下列程序。
程序通过创建一个小型函数库,它包含两个函数,然后在一个示例程序中调用其中一个函数。
这两个函数分别是pro1和pro2。
按下面步骤生成函数库及测试函数库。
步骤1 为两个函数分别创建各自的源文件(将它们分别命名为pro1.c和pro2.c)。
[root@localhost root]# vi pro1.c#include <sdtio.h>void pro1(int arg){printf(“hello:%d\n”,arg) ;}[root@localhost root]# vi pro2.c#include <sdtio.h>void pro2(char *arg){printf(“您好:%s\n”,arg) ;}步骤2 分别编译这两个文件,生成要包含在库文件中的目标文件。
这通过调用带有-c 选项的gcc编译器来实现,-c选项的作用是阻止编译器创建一个完整的程序,gcc将把源程序编译成目标程序,文件名为以.o结尾。
如果此时试图创建一个完整的程序将不会成功,因为还未定义main函数。
[root@localhost root]# gcc -c pro1.c pro2.c[root@localhost root]# ls *.opro1.o pro2.o步骤3 现在编写一个调用pro2函数的程序。
首先,为库文件创建一个头文件lib.h。
实验报告linux编程实验报告:Linux编程引言:Linux操作系统是一种开源的操作系统,具有高度的灵活性和可定制性。
在本次实验中,我们将探索Linux编程的基本概念和技术。
通过编写简单的程序,我们将了解Linux系统的工作原理以及如何利用其强大的功能来开发应用程序。
一、Linux操作系统简介Linux操作系统是一种基于Unix的开源操作系统,它由许多不同的组件组成,包括内核、命令行工具和图形界面等。
Linux操作系统具有许多优势,如稳定性、安全性和可扩展性。
它广泛用于服务器、嵌入式设备和个人电脑等领域。
二、Linux编程环境搭建1. 安装Linux操作系统:选择适合自己的Linux发行版,如Ubuntu、Fedora等,并按照官方指南进行安装。
2. 安装开发工具:在Linux系统上进行编程需要安装一些开发工具,如GCC编译器、GNU调试器(GDB)等。
三、Linux编程基础1. Shell脚本编程:Shell是Linux系统的命令行解释器,通过编写Shell脚本可以实现自动化任务和批处理任务。
Shell脚本使用一些特定的语法和命令来执行任务。
2. C语言编程:C语言是Linux系统中最常用的编程语言之一,通过编写C程序可以实现更高级的功能。
C语言提供了丰富的库函数和系统调用,可以与Linux系统进行交互。
四、Linux系统编程1. 进程管理:Linux系统是一个多进程的操作系统,通过编写程序可以创建、管理和控制进程。
可以使用fork()和exec()等系统调用来创建新进程,使用wait()和kill()等系统调用来管理进程。
2. 文件操作:Linux系统中的文件操作是非常重要的一部分,通过编写程序可以实现文件的读取、写入和修改等功能。
可以使用open()、read()和write()等系统调用来进行文件操作。
3. 网络编程:Linux系统支持网络编程,通过编写程序可以实现网络通信的功能。
可以使用socket()和bind()等系统调用来创建和管理网络套接字。
实验四Linux shell程序设计一一、实验目的1.掌握shell程序特点2. 掌握shell程序的执行方式二、实验任务用vi编辑器建立一个shell程序myfirst_shell,该shell的功能为当没有参数时列出当前目录下的文件列表,如果有目录参数时,依次列出各个目录参数下的目录文件列表(书上例4.2),然后用课堂讲的五种方法执行。
三、实验设备与环境安装有Red Hat Linux的机器29台四、实验过程问题1:Myfirst_shell程序编写1、打开命令终端,进入home目录,建立一个以自己名字的拼音为文件名的文件夹,然后进入该文件夹。
2、运行vi myfirst_shell,进入vi编辑器,按i(或者I\a\A\O\o)切换到输入方式,输入以下内容#$!/bin/bash#$!if no argument,then listing the current directory#$Otherwise,listing each subdirectoryif test $# = 0then ls .elsefor idols -l|grep '^d'donefi现对该程序内容进行简单介绍:#!/bin/bash,表示下面的脚本是bash编写的,必须调用bash程序对它解释执行if test $# = 0 -------------其中 $#表示参数的数目,后面会讲then ls . ---------------列出当前路径下的文件列表for i ------------------i为参数的范围,如3个参数,i为1,2,3 ls –l $i|grep ‘^d’------$i为第几个参数名,如/home为第一个参数,则$1就是/home,“|”表示管道符号,grep ‘^d‘表示查找管道中的目录文件fi ---------------------------if的结束标记,主要不要写成if3、输入完毕后,按“ESC”退出输入方式,然后按冒号,再输入wq或者x(如果不保存则输入q!)4、使用以下五种方式执行myfirst_shell(1)输入定向到shell脚本#bash<myfirst_shell查看解决是什么?如果改成#bash<myfirst_shell结果又是什么?(2)以脚本名作为bash参数分别执行下面命令#bash myfirst_shell#bash myfirst_shell /home#bash myfirst_shell /home /etc查看执行结果是什么?(3)将shell程序脚本的权限设置成可执行,然后再提示符下直接执行。
实验4 Linux程序开发基础一、实验目的:1.继续熟悉Linux终端命令;2.继续学习使用Vi编辑器;3.学习使用Linux环境下C语言程序的编译。
4.调试器Gdb的使用二、实验要求:完成实验内容并写出实验报告,报告应具有以下内容:1.实验目的。
2.实验内容。
3.实验过程、实验结果截屏。
4.实验过程中出现的问题及解决方法。
5.实验体会。
三、实验内容:1.使用Vi文本编辑器编写c语言程序。
2.学习使用C编译程序gcc3.使用调试器Gdb来调试程序四、实验步骤:1、以超级用户root登录系统,以自己名字新建一个用户,并用该用户重新登录系统。
2、创建C语言文件:使用vi编辑器在各自的目录下创建一简单C语言程序(文件名为first,扩展名为.c),程序内容为在屏幕上打印一行英文,英文字母自定,要求每个同学不同。
(提示:C语言中打印命令为printf)3、编译C语言程序:要求掌握Linux中最常用的C编译程序gcc的使用。
命令:gcc命令格式:gcc 【选项】文件列表该命令用于调用C编译系统。
当命令执行后,它依次进行预处理,编译,汇编,链接,最后产生可执行代码。
默认情况下,可执行代码放在a.out文件中。
例:gcc first.c//对文件first.c进行编译,编译通过后的话没有任何显示,产生默认的可执行文件a.out(用ls命令可以查看到该文件,该文件显示为绿色)。
可执行文件可以直接在提示符后输入文件名运行。
如:#a.out 回车将显示结果编译没有通过的话将显示出错的行数和信息。
gcc first.c –o hello//gcc命令带上选项–o表示对文件first.c进行编译,编译通过后,将可执行代码存放在指定的文件hello中(hello名字由用户定)。
现要求每个同学使用gcc对自己所编写的first.c程序进行编译并执行。
所产生的可执行文件命名为hello。
如果可执行文件不能直接运行,在可执行文件前加上. /,表示当前目录的意思4、编写如下c语言程序,使用循环语句从1加到100,并练习调试器Gdb的使用(设置断点并单步调试)调试器Gdb的用法:Linux系统中标准调试器是gdb,它可用来调试C、C++、Java等程序。
实验四常用开发工具一、实验目的1、掌握Linux 下的C语言编译的基本方法2、理解make工具的功能,学会编制makefile的方法二、实验内容1、利用gcc编译C语言程序,使用不同的选项,观察并分析显示结果2、编写一个由多文件构成的C语言程序,编制makefile,运行make工具进行维护。
三、主要实验步骤1、参考例6.1 ,设计一个程序,打印输出输入数字的正弦值。
要求定义属于自己的头文件,并且放在另外的目录中(比如/tmp中)。
使用下列选项进行编译:-I, -E, -c , –o , -l 。
2、已知有一个由4个文件构成的C语言程序,文件名分别为:main.c、one.c、two.c、public.h。
源代码如下所示:Main.c:#include"public.h"int main(){printf("main ...\n");show1();show2();return 0;}One.c#include"public.h"void show1(){printf("hello, this show1 \n");}Two.c#include"public.h"void show2(){printf("hello, this show2 \n");}public.h#ifndef __MANYCO_MAKEFILE_PUBLIC_1#define __MANYCO_MAKEFILE_PUBLIC_1#include<stdio.h>void show1();void show2();#endif针对这个由4个文件构成的C语言程序,编制一个最原始的makefile文件,运行make 工具进行维护.。
实验4 Linux高级程序设计1、实验目的(1) 了解Linux操作系统下应用程序开发流程⑵掌握gun工具链的使用(3) 了解Linux高级编程技巧(例如IPC机制、系统调用等)2、实验内容(1) 编写一个简单的C语言程序,编写Makefile文件。
了解编译过程,并用gdb 进行调试。
(2) 编写一段程序,适用系统调用fork()创建两个新的子进程,此程序运行使系统中有三个活动进程存在。
控制让一个进程在屏幕上显示一个字符:父进程显示“a”,子进程分别显示字符“ b”和字符“ c”。
试观察屏幕上的显示结果,并对输出结果进行分析。
在实验报告中写出说明和分析。
(3) 编写一段程序实现父进程创建一个子进程,通过系统调用使子进程和父进程执行不同的任务。
(提示:利用system(), exec系列函数)试思考,怎样实现进程间的同步?(4) 编写一段C程序完成:父进程创建一个子进程,父进程对子进程设置一个报警信号,然后父进程等待子进程的结束,如果此时报警信号先到,就终止子进程。
3、实验要求(1) 写出源程序,并编译运行(2) 详细记录程序调试及运行结果4、实验思路及过程(1)File Edit View Terminal labs 旦白p[qinpengchengfasoftware -]i su - Password :[root@software [root^software [root@software [root^software [root@softwareT# cd / /]# mkdir c/]# cd /c cvl makefileG# |[root(0software c]# make * f makefilemake: *** No rule to make target 'main.c ', needed by 'main,o Stop.[rootfBsof tware [root(3sof twa re [root (asof tware [root^software [root(3sof twa re[root (asof tware c]# touch a.h c]# touch b,h c]# touch c.h 匚]軒vi main.匚 c]# vi l.c Cj# Vl 2.Cmakefile 文件:□ makefile xmyapp: main.o 1.o 2.o| gcc -o myapp main.o 1.o 2.o mai ri.o: main . c a . hgcc - c mai n * cl.o:1.c a.h b.hgcc -c 1.c2*o: 2.匸b.h c.hgcc -c 2.cmain .c 文件:口main.c x/* main * c */#include <stdio.h>#include <stdl|ib. h>#inelude n a.h"extern void fun匚tncm_onE(); externvoid fun匚tion_twa();int main(){function_one();function_two();exit(E X T TSUCCESS);} _,,a r h ,,<stdio F h> <stdlib.h>void function_one(} {printf (p,fuinction_one....2. c 文件:O2.C K7^ 2.匚#include "b.h #include "c.h #include <stdio ・ h>#incl.ude <stdlib ・ 2 void function_two() {printf (unction_two …”}-o 写成-c ,函数库导入不正确:[root(8software cl# make -T makefile-c main.c -cIn function 1 fun 匚tlort one1. c:6: warning: incompatibLe implicit dm 匚laration of built-in function gcc -c2.c 2. 匸:In function J function two*:2.c:6: warning : incompatible implicit declaration of built'in function gcc -c myapp main.o l.o 2・D gcc: inyapp : No such file or directory make: *** [myapp] Error 1IT J_ J *"L一一 _£ Ji— F lil ■[root@software c]# vi 2,c [root^software c ]# vi main.c[root@software t]# make -f makefile gcc *c main,c gcc -cgcc *c 2・匸gcc -o myapp main.o 1k o 2.o [root^software c |1.c 文件:^include # include ^include # i nclud 色printfprintf[root (asoftwa re c" " -1 total 80 -rw ” r- ” r-- 1 roo t root 132 J^rt 1 68 461 -rw -r- -r-- 1 root root 860 Jan 1 08 47 1,0r Y —— 1 root root 133 Jan 1 68 46 2.C -rw - r- -r-- 1 root root 866Jan 1 08 47 2. o -rw - r- -r-- 1 root root e Dec 31 18 57 a .h -rw - 「▼-「▼-1 root root 0 Dec 31 18 57 b.h -rw - r- -r-- 1 root root 0 Dec 31 18 58 c ,h 亠rw r-1 root root 197 Jan 1 08 47 maln -rw ” r- -r-- 1 root root 856 Jan 1 G 8 47 main.o -rw - r- -r-- 1 root root 144 Jan 1 0834 makefile ^rwxr-xr^x 1 root root 5968 Jan 168 47 myapp[root(3software c]#/tmp/ccQ9Ys9n,o : In function main*:maIn.c:(,text+0xl2): undefined reference to functionone ( main .c :(.t ext+Bxl7): undefined reference to'function _t wo ' collect2: Id returned 1 exit status [root (asoftware €]# gdb myappGNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.elS) Copyright {Cl 26G9 Free Software Foundation t Inc LLicense GPLV3+: GNU GPL version 3 or later <http ://g+ This is free software : you a re Tree to change and redistribute it .There is NO WARRANTY, to the extent permitted by LaWx Type 11 show copying 1' and N show warranty 1* for details.This GDB was configured as "1386-redhat-llnux-gnu".For bug reporting instructionm 「 please see: <http ://www.gnu +0rg/5Oftware/gdb/bugs/>... myapp: No sucn file or directory. tqdb) 1ffle E (tt view Rac« 旦eUHLACL RLML l BUKL ■0 D 0 l.e2x2 aa.4ib.hch園&ApfcH -4EE ■ ■ Ll = bur . I 劭mwi.cmjiiin.Dimakefilem ¥aPP[rootQsoftware c ]# get-o myapp main ・匸O fork c x#include<stdio.h> main(){int pl,p2;if (pl-fork())putcha r( ' b');else{if(p2=fork()) putchar(' c1) j else putchar(1 a 1);}}[qinpeng cheng^sof~]$ gcc -o fork fork.c [qinpengcheng(aso f tware ./forkacb[qlnpengcheng(asoftware -J* ./fork ab[qinpengcheng^cftware *]$ Cn/fork acb[qinpengcheng^scftware *]辛-/fork act[qlnpengcheng(3software 宀]$ ./fork b[qinpengcheng(asoftware ~]$ ca./fork acb[qinpengcheng(asoftware -]$ ./fork acb[qinpengcheng(asoftware -]$ ./fork acb[qinpengcheng^software 〜]$ ./fork acb[qinpengcheng(asoftware ,/forkacb[qinpengcheng^software 〜]$ -/fork acb[qinpengchen^software -]$ -/fork acb[qlnpengcheng(3software./forkb[qinpengcheng(3software -]$ ac出现acb的结果:p仁fork()会创建一个新的进程,父进程遇到p2=fork() 创建又一个新的进程,此时,父进程运行完毕输出a, p2=fork()创建的子进程运行完毕输出c,最后p仁fork()创建的子进程运行完毕输出b;出现abc的结果:p仁fork()会创建一个新的进程,父进程遇到p2=fork() 创建又一个新的进程,此时,父进程运行完毕输出a,p仁fork()创建的子进程运行完毕输出b,最后p2=fork()创建的子进程运行完毕输出c; 出现bca的结果:p仁fork()会创建一个新的子进程,运行完毕输出b, 父进程遇到p2=fork()创建又一个新的子进程,运行完毕输出c,最后父进程运行完毕输出a;出现bac的结果:p仁fork()会创建一个新的子进程,运行完毕输出b,父进程遇到p2=fork()创建又一个新的子进程,父进程运行完毕输出a,最后子进程运行完毕输出c;(3)0 process,匚*#include <unistd.h>^include <stdio.h>#include <stdlib.h>int main(){int result;printf("Running Is with system:\n");result = systern( "Is /home");printf("systmm result=%d\n"r result);printf("system has done!"); printf ( ^'Running Is with exec: \n"); result =execlp(,,ls,,/,ls,,f V^G);printf("exec result=%d\n",result); printf ("exec has done!");exit(0);}[qlnpengchengtasoftware -] S gcc - □ process process . c[qinpeng匚日「m -]S ./processRunning Is with system:opt qlnpengchengsystem result=flsystem has done!R unning Is with exec:bln dev gcc461lost+found mnt proc selinux tmpboot etc home inedia net root srv usrc g-*-+461lib misc opt sb"sys var[qlnpengchengtasoftware .system是用shell来调用程序=fork+exec+waitpid ,而exec是直接让你的程序代替原来的程序运行。
操作系统课程实验报告姓名XX 学号1001010127 系计算机任课教师XX 指导教师XX 评阅教师贺辉实验地点综合楼B102实验时间2012/10/24实验课表现出勤和个人表现Q1(15+15(组长评分)=30分)得分:实验总分(Q1+Q2+Q3) 实验完成情况Q2(60分) 得分:体会实验过程中遇到的问题解决办法与实验体会Q3(10分)得分:实验编号与实验名称:实验目的:1 管理Linux系统进程1) 回顾系统进程的概念,加深对Linux / UNIX进程管理的理解。
2) 回顾ps命令和选项。
3) 列出当前shell中的进程。
4) 列出运行在系统中的所有进程。
2 进程互斥实验1、进一步认识并发执行的实质2、通过分析实验结果,分析进程竞争资源的现象,学习解决进程互斥的方法3 进程的控制实验1、掌握进程另外的创建方法:需认真分析实验结果,体会本次实验进程创建方法与fork的不同2、通过分析实验结果,熟悉进程的睡眠、同步、撤消等进程控制方法实验内容1、用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容2、利用wait( )来控制进程执行顺序实验内容及要求(详见实验讲义与实验指导书):实验用到的软件(:)实验内容及关键步骤(代码)Q2(60分)步骤1:登录进入Linux。
步骤2:访问命令行。
单击“系统工具”-“终端”命令,打开“终端”窗口。
步骤3:回顾系统进程概念。
每个运行的程序都会创建一个进程,进程分配到一个唯一的进程标识符(PID) 。
PID被系统用于标识和跟踪进程,直到进程结束。
1) Linux系统中,几乎每一个启动的进程,都会由内核分配一个唯一的______PID_________,用于跟踪从进程启动到进程结束。
2) 当启动新进程的时候,内核也给它们分配系统资源,如__CPU______和____RAM____。
3) 永远不向父进程返回输出的进程叫做___僵进程___________。
首先保证试验箱上的eLinux已经正确创建,创建的详细过程可参考讲义“第六讲之二eLinux 系统的构建与启动分析”。
一、概述
1.实验箱上的eLinux系统没有编译工具,所以源文件需要在redhat虚拟机下交叉编
译。
实验室的redhat虚拟机都已经建立好了交叉编译环境。
2.把编译好的ARM平台可执行文件从redhat虚拟机传送到实验箱。
比较方便的方法
是通过网络ftp服务来传送。
redhat虚拟机已经开启了ftp服务。
3.为了能够传输文件,需要对redhat虚拟机和实验箱进行网络配置。
本实验条件下,
Redhat虚拟机网络最方便的配置是采用Bridged(桥接)方式。
二、Redhat虚拟机Bridged(桥接)方式网络配置
Bridged(桥接)——虚拟机分配静态IP,直接连到局域网,与windows主机地位相同,相当于独立主机
1.保证虚拟机的网络是连接的:
2.选择Bridged(桥接)方式
3.设置好网络方式是Bridged后,类似与windows主机的网络设置✓设置IP(与windows主机同网段)
✓设置网关(同windows主机)
✓设置DNS(同windows主机)
双击eth0设备,统一设置IP为:218.192.169.239;subnet mask=255.255.255.0;gateway=218.192.169.254
返回上图后,设置DNS=202.112.17.33
保存设置
4.重新激活网卡,使设置生效
先解除:
再激活:
三、实验箱eLinux系统的IP设置
查看当前的IP设置:# ifconfig
配置eLinux系统的IP:# ifconfig eth0 218.192.169.* (只要不与windows主机及redhat 虚拟机相同即可)
四、下面以helloworld.c为例来详细讲解如何编程
1.helloworld.c源码:
#include <stdio.h>
int main(void)
{
printf(“hello world!\n”);
return 0;
}
2.在redhat虚拟机下编写helloworld.c源代码
可以用附件中的文本编辑器(gedit)等进行编辑;这里推荐使用vi,因为vi是一个重要的工具,可以直接在字符终端进行编辑。
3.可以使用makefile 或直接用arm-linux-gcc 工具进行编译:
1)直接编译:#arm-linux-gcc –Wall –g –o hello-arm helloworld.c
2)写makefile:
CC=arm-linux-gcc
all:hello-arm
hello-arm:helloworld.c
$(CC) -Wall -g -o hello-arm helloworld.c
clean:
rm -f hello-arm
然后在redhat虚拟机终端进行make:#make
Make工具会自动根据当前目录下makefile的配置进行编译
4.使用file指令查看编译好的文件
#file hello-arm
应当能看到该文件是ELF格式可执行文件,且是ARM平台文件。
五、将执行文件通过网络传送到实验箱运行
1.在实验箱串口终端,测试是否和redhat虚拟机网络连通
#ping 218.192.169.239(虚拟机IP)
如果网络是连通的,需要中断测试,可以用CTRL+C
2.用FTP协议登陆redhat虚拟机,下载文件
#ftp 218.192.169.239(虚拟机IP)
会提示输入用户名和密码,输入root,密码eescut即可提示登录成功,并显示提示
符:
ftp>
输入?可以获取可用的ftp指令
ftp>?
利用ls和cd指令,改变路径到hello-arm所在的目录,然后ftp>get hello-arm
会提示send ok。
然后退出ftp
ftp>quit
返回到实验箱eLinux终端:
#
此时用ls指令可看到eLinux下有文件hello-arm。
3.在实验箱eLinux下执行该程序
1)赋予该文件可执行权限:
#chmod +x ./hello-arm
#ls –l hello-arm 可以看到该文件的详细信息
2)执行该文件
#./hello-arm (./为当前目录)
在串口终端会看到结果。