gcc编译程序与gdb调试程序.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式原理与应用实验 实验五gcc编译程序与gdb调试程序 学号 姓名 班级 华侨大学电子工程系 实验五gcc编译程序与gdb调试程序 一、实验目的 通过几种不同需求的程序,掌握使用gcc的各种选项编译程序。 通过调试一个有问题的程序,使读者进一步熟练使用vi操作,而且熟练掌握gcc编译命令及gdb 的调试命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。 二、实验内容:? 1、学习使用gcc的各种选项编译程序。 (1)编译和运行这段程序 hello.c: #include stdio.h int main(void) { printf (“Hello world!\n”); return 0; } (2)创建静态库,并运行程序 /* pow_test.c */ #include stdio.h #include stdlib.h int main(int argc, char *argv[]) { unsigned int x, y; unsigned long long res; if ((argc 3) || (sscanf(argv[1], %u, x) != 1) || (sscanf(argv[2], %u, y)) != 1) { printf(Usage: pow base exponent\n); exit(1); } res = unsgn_pow(x, y); printf(%u ^ %u = %u\n, x, y, res); exit(0); } /* unsgn_pow.c:库程序 */ unsigned long long unsgn_pow(unsigned int x, unsigned int y) { unsigned long long res = 1; if (y == 0) { res = 1; } else if (y == 1) { res = x; } else { res = x * unsgn_pow(x, y - 1); } return res; } 创建静态库,然后编译主程序,并运行结果。 (3)针对(2)的程序,创建动态库,然后编译主程序,并运行结果。对比两者的区别。 (4)对下面程序进行优化编译,对比优化前后的结果,并解释说明结果。 #include stdio.h int main(void) { double counter; double result; double temp; for (counter = 0; counter 2000.0 * 2000.0 * 2000.0 / 20.0 + 2020; counter += (5 - 1) / 4) { temp = counter / 1979; result = counter; } printf(“Result is %lf\\n”, result); return 0; } 2、用gdb调试程序的bug (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

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档