linux环境下编译C

来源:互联网 发布:耳环 淘宝代理 编辑:程序博客网 时间:2024/04/18 16:18


Linux环境下编译C代码

  1. 1)启动虚拟机,进入Linux操作系统,然后启动终端

  1. 使用Vim编辑源程序,练习命令模式、编辑模式、底行模式之间的切换,在终端中输入vi hello.c,编辑完成后存盘。

     

    3)练习以下编译选项的使用:gcc -E hello.c -o hello.i          

    gcc -S hello.i -o hello.S           

    gcc -c hello.S -o hello.o         

  1. //目标文件gcc hello.o -o hello (此处执行时要加-g,否则之后查看代码时无法正常查看)             

  2. 运行程序,在终端中查看程序运行结果。

  3. 2GDB调试器的使用。

  4. 使用Vim编辑源程序,在终端中输入vi test.c,输入如下源代码,编辑完成后存盘。此代码的功能为输出倒序main函数中定义的字符串,但结果没有输出显示,现通过调试的方式来解决程序中存在的问题。程序源代码如下:

  5.  #include <stdio.h>

  6. int display1 (char *string)

  7. int display2 (char *string1)

  8. int main () {

  9.        char string[] = "Embedded Linux";     

  10.        display1 (string);       

  11.        display2 (string); }

  12. int display1 (char *string)

  13.   printf ("The original string is %s \n", string); }

  14. int display2 (char *string1) {

  15.        char *string2;

  16. int size,i;

  17.        size = strlen (string1);

  18. string2 = (char *) malloc (size + 1);      

  19.   for (i = 0; i <= size; i++)

  20.        string2[size - i] = string1[i];       

  21.  string2[size+1] = ' ';

  22.        printf("The string afterward is %s\n",string2); }

  23. 1)用Gcc编译:gcc -g greet.c -o greet

  24. 2)运行greet./greet,查看输出结果是否正确。  (3)启动Gdb调试:gdb greet查看源代码:l

  25. 在行(for循环处)设置断点:b 30

  26. 33行(printf函数处)设置断点:b 33。 查看断点设置情况:info b 运行代码:r

  27. 单步运行代码:n

  28. 查看暂停点变量值:p string2[size - i]

  29. 继续单步运行代码数次,并使用命令查看,发现string2[size-1]的值正确 继续程序的运行:c

  30. 程序在printf前停止运行,此时依次查看string2[0]string2[1]…,找到程序运行结果不正确的原因。 退出Gdbq

  31. 将程序修改正确并使用Gcc重新编译,查看运行结果:./greet  

     

原创粉丝点击