您的位置:首页 > 其它

20145334赵文豪关于实验一二四五过程中问题的总结

2016-11-16 17:20 736 查看
已经做了两周的实验了,实验一二四五都是在同一个环境中做,所以说配置硬件很是关键,终端和虚拟机的操作也要求很细腻,我们用的是VMware,界面可能和ubuntu有一点点不一样,在做实验的过程中也出现了各种各样的问题。其实说实在的,做实验基本都是有教程,有代码,我们在做实验的过程中并不是自己开发自己编代码,所以就已经降低了难度。对于这种照猫画虎的过程我们只要细心,静下心来应该不成问题。

实验一问题总结:

1.实验箱的连接、进入虚拟机都顺利完成,顺利修改本地pc机和虚拟机IP使其位于同一网段,但是虚拟机中ipconfig命令显示未安装,由于实验室无网络所以install未果,看不到IP地址是否修改,如何确定实验箱、虚拟机、pc连接成功?

解决过程:听取老师建议,想到用ping指令检验三者是否能ping通,分别在pc上输入虚拟机IP以及实验箱IP均显示成功,在虚拟机上输入实验箱IP显示成功,说明IP修改成功。

2.在修改/root/.bash_profile中的bin时,将armv-41误打成4l,导致后面编译时显示该条命令未安装不能进行编译;

解决过程:重新用vi命令打开相关文件夹进行修改,并听取老师建议,在之后的输入中尽量使用Tab键自动补全命令减少这种没必要的出错;

3.在下载调试时直接输入./hello无法运行程序;

解决过程:在同学提醒下将命令加上/host,成功运行。

4.下载调试 在超级终端中将共享文件夹挂载好,建立开发板与虚拟机之间的通讯。输入 命令“mount -t nfs -o nolock 192.168.0.234:/root/bc /host”,但是我发现有几个同学,包括我们小组在内把命令输在了虚拟机当中,真是有点蠢!

5.在编译hello.c的时候提示“not found”。

解决方法有两个:

再次进入bash_profile文件,修改并保存路径;

直接在GCC编译的时候在hello.c前面加上路径 /opt/host/armv4l/bin/。

6.make后出现错误提示error127,后来经过百度查询资料问题在于环境变量的配置出现问题,重新配置后则显示正常。

使用Makefile文件编译未能成功,提示提示头文件中的函数出错。根据错误解释,应该在Makefile路径未找到头文件,是因为Makefile修改的问题,没有修改正确。按照实验指导书对照修改后解决了问题。

7.在虚拟机中编译代码

输入命令:armv4l-unknown-linux-gcc pthread.c -o pthread -lpthread

对于多线程相关的代码,编译时需要加-lpthread 的库,有一部分人没有添加这个库。



实验二:

实验二和实验一大部分人都是一次完成的,大家的好多问题都是相近的,我摘录了以下的问题和解决方法。

1.打开超级终端,打开 arm 机电源开关,等待一段时间后发现arm 机的信息没有显示在超级终端的窗口中

解决方法:重启计算机,再次建立超级终端,arm 机的信息成功显示

2."armv4l-unknown-linux"的含义是什么?与"gcc hello.c –o hello"有什么联系?

解决方法:armv4l-unknown-linux:这是交叉编译器(arm-linux-gcc)编译命令,用于开发板的程序编译。(交叉编译器用于以下情况:目的平台上不允许或不能够安装我们需要的编译器;目的平台上的资源贫乏,无法运行我们所需要编译器;目的平台还没有建立,没有操作系统)

gcc hello.c –o hello:平时在Linux系统中对C程序的编译使用的是主机编译,命令为gcc hello.c 即可

3.arm 机的信息显示后输入ifconfig没有显示正确的ip信息

解决方法:arm 机的信息显示后应继续等待arm机加载。于是我们重新建立超级终端,等待所有信息加载完成再输入ifconfig,最后所得结果与实验指导书相同

4.在虚拟机中使用armv4l-unknown-linux-gcc pthread.c -o pthread -lpthread命令编译pthread.c文件时出错,提示bash:armv4l-unknown-linux-gcc:command not found

解决方法:经过理解错误提示,发现是环境变量没有配置成功,进入/root/.bash_profile重新配置后即可编译成功(先开始hello.c也没编译通过,我们一时没有想到解决方法就继续向后做了,后来改正这个错误后都编译成功了)



5.在超级终端运行可执行文件term时出错,提示/dev/ttyS0: No such file or directory

老师给的实验指导书中说:这个问题是因为在 Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 在我们的开发板中串口设备位于/dev/tts/下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接。解决方法就是按照实验指导书说的在超级终端中进入/dev文件夹中,输入命令ln –sf /dev/tts/0 ttyS0(注意空格与字母l、数字0。)



6.在虚拟机中编译代码时第一次没有编译成功:command not found

在又重新输入命令行,排除是输入错误的因素。我们试着重新配置了环境:

vi /root/.bash_profile

source /root/.bash_profile



7.在终端执行./term时出现错误

解决方法:根据实验指导书输入命令“ln –sf /dev/tts/0 /dev/ttyS0” 注意空格与字母l、数字0。





8.关于编译pthread.c的时候输入命令回车之后总是提示“not found”的问题:

我们小组在执行一些诸如 cd XXX,或者vi XXX命令的时候,经常遇到这样的错误提示。后来经过与实验指导书的对比,我们发现,实验指导书中的路径和实际执行时的路径是有差别的(比如,pthread文件在虚拟机中的绝对路径就是 /bc/02pthread,而不是指导书中的exp/basic/02pthread)。

9.03_tty代码使用编译工具armv4l编译时无法通过

解决:实验中为了简便把03_tty文件夹放在了桌面上,代码存储路径包含了中文就无法通过编译,所以我们把代码文件夹放到了c盘根目录下,成功编译。



实验四:

1.用Makefile文件编译未能成功,提示头文件中的函数出错。

根据错误解释,应该是在Makefile路径未找到头文件中的库函数,于是在Redhat系统中找到存放内核头文件的路径,将其替换掉原先在Makefile文件中的路径,在执行make命令编译,成功。

2.在编译测试文件test_demo.c时,使用gcc编译不成功, 使用armv4l-unknown-linux-gcc编译也不成功。

在使用gcc编译时未建立设备节点,建立结点后编译成功。

3.实验进行当编译那一步时总是出错,无法显现出指导书上那样正确的情况。

在实验中,编译我们使用了make的方法。我们错误认为使用交叉编译,但是应该用GCC编译,补上相关语句,修改MAKEFILE即可成功。



实验五:

1.建立超级终端时细节出错:

运行WindowsXP中:开始→所有程序→附件→通讯→超级终端(HyperTerminal)。

新建一个通信终端。要求输入区号、电话号码等信息请随意输入,为所建超级终端取名为 arm,随意为其选一个图标。

在属性对话框中,将波特率设为 115200,数据位设为 8,无奇偶校验,停止位为 1,无数据流控制。将其另存为在桌面。

2.在运行make命令产生可执行文件httpd时,我们运行make命令结束后,进入07_httpd文件夹内查看,发现并没有生成httpd这一文件

解决办法:再次运行make命令后得到提示can’t open output file ../bin/httpd,可知,在我们当前所在的07_httpd文件夹的上级目录ws中并不存在bin这个文件夹,所以导致命令运行时无法进入ws/bin/httpd这一路径

使用mkdir这个创建指定名称目录的命令,返回到当前目录的上一级目录中,使用mkdir bin在ws文档中创建了bin目录,于是可顺利运行make命令产生httpd文件



3.将07_httpd文件中全部拷贝进了bc中,文件夹中拥有Makefile文件,但是还是无法通过make得到该文件夹中httpd的可执行文件。

第一次是觉得Makefile文件中的PATH路径不对,将其改成了/home/bc/07_httpd存盘退出后发现还是无法执行,第二次我们直接使用gcc对其单步进行编译。

4.


解决httpd未能自动编译的问题,对hpptd.c文件进行手动多线程编译

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: