在linux里,c程序的编辑、编译、调试的详细步骤是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在linux里,c程序的编辑、编译、调试的详细步骤是啥?相关的知识,希望对你有一定的参考价值。

c语言基础较好,不过,是在windows环境下。
第一次接触linux,对界面、操作还不熟。
参考书虽然多,但是,也没有最基本的步骤。
请问:编写c程序、编译、调试的详细步骤(在什么地方键入什么命令?)是什么?有相关的视频吗?

是新手,请说清最基本的步骤。书上往往没有说这些步骤。
谢谢。

    在linux下,一般的c程序开发流程为:

    c程序的编辑:

    一般情况下,简单的c程序编辑是通过vi文本编辑器进行的,语法格式和在windows下的编辑是一样的;

    c程序的编译:

    而编译则是对编辑好的c语言程序进行一个,预处理,编辑,汇编和链接的过程,一般格式为:     编译器名 -参数 目标文件名 源文件名;

    一般工作在命令行模式;

    c程序的调试:

    调试阶段则是建立在c程序编译通过的情况下进行的,一般通过GDB调试进行,逐步排错和细节查看。

参考技术A 程序编写
命令行下的有vi,emacs
有界面的kwrite等等
编译用gcc
调试用gdb

一个编译调试示例
——————
源程序:tst.c
1 #include <stdio.h>
2
3 int func(int n)
4
5 int sum=0,i;
6 for(i=0; i<n; i++)
7
8 sum+=i;
9
10 return sum;
11
12
13
14 main()
15
16 int i;
17 long result = 0;
18 for(i=1; i<=100; i++)
19
20 result += i;
21
22
23 printf("result[1-100] = %d \n", result );
24 printf("result[1-250] = %d \n", func(250) );
25
编译生成执行文件:(Linux下)
hchen/test> gcc -g tst.c -o tst
使用GDB调试:
hchen/test> gdb tst <---------- 启动GDB
GNU gdb 5.1.1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-suse-linux"...
(gdb) l <-------------------- l命令相当于list,从第一行开始例出原码。
1 #include <stdio.h>
2
3 int func(int n)
4
5 int sum=0,i;
6 for(i=0; i<n; i++)
7
8 sum+=i;
9
10 return sum;
(gdb) <-------------------- 直接回车表示,重复上一次命令
11
12
13
14 main()
15
16 int i;
17 long result = 0;
18 for(i=1; i<=100; i++)
19
20 result += i;
(gdb) break 16 <-------------------- 设置断点,在源程序第16行处。
Breakpoint 1 at 0x8048496: file tst.c, line 16.
(gdb) break func <-------------------- 设置断点,在函数func()入口处。
Breakpoint 2 at 0x8048456: file tst.c, line 5.
(gdb) info break <-------------------- 查看断点信息。
Num Type Disp Enb Address What
1 breakpoint keep y 0x08048496 in main at tst.c:16
2 breakpoint keep y 0x08048456 in func at tst.c:5
(gdb) r <--------------------- 运行程序,run命令简写
Starting program: /home/hchen/test/tst
Breakpoint 1, main () at tst.c:17 <---------- 在断点处停住。
17 long result = 0;
(gdb) n <--------------------- 单条语句执行,next命令简写。
18 for(i=1; i<=100; i++)
(gdb) n
20 result += i;
(gdb) n
18 for(i=1; i<=100; i++)
(gdb) n
20 result += i;
(gdb) c <--------------------- 继续运行程序,continue命令简写。
Continuing.
result[1-100] = 5050 <----------程序输出。
Breakpoint 2, func (n=250) at tst.c:5
5 int sum=0,i;
(gdb) n
6 for(i=1; i<=n; i++)
(gdb) p i <--------------------- 打印变量i的值,print命令简写。
$1 = 134513808
(gdb) n
8 sum+=i;
(gdb) n
6 for(i=1; i<=n; i++)
(gdb) p sum
$2 = 1
(gdb) n
8 sum+=i;
(gdb) p i
$3 = 2
(gdb) n
6 for(i=1; i<=n; i++)
(gdb) p sum
$4 = 3
(gdb) bt <--------------------- 查看函数堆栈。
#0 func (n=250) at tst.c:5
#1 0x080484e4 in main () at tst.c:24
#2 0x400409ed in __libc_start_main () from /lib/libc.so.6
(gdb) finish <--------------------- 退出函数。
Run till exit from #0 func (n=250) at tst.c:5
0x080484e4 in main () at tst.c:24
24 printf("result[1-250] = %d \n", func(250) );
Value returned is $6 = 31375
(gdb) c <--------------------- 继续运行。
Continuing.
result[1-250] = 31375 <----------程序输出。
Program exited with code 027. <--------程序退出,调试结束。
(gdb) q <--------------------- 退出gdb。
参考技术B (1)用工具写好C程序...比如vi
(2)打开终端,进入你存放C语言代码的路径 例如: cd /opt/
(3)gcc a.c -o abc 意思是:把你的a.c编译成abc可执行文件
(4)在当前目录终端下 运行生成的abc,例如: ./abc 前面的.不要掉了
后面可以用gdb进行调试,你可以自己去学习...这是最基本的!!

大家初学c语言用的编辑器和编译器是怎么下载安装详细步骤?

code blocks自带编译器吗?在哪里?我的无法自动检测还是检测不到

1.Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境.
相比于基于Delphi的Dev-C++共享 C++IDE,Code::Blocks是开放源码软件Code::Blocks由纯粹的C++语言开发完成,它使用了蓍名的图形界面库 wxWidgets(2.6.2 unicode)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢,再也不必忍受VS.NET的庞大和高昂的价格。

2.安装主要步骤

    安装Code::Blocks第一个正式版本 ver 8.02。

    安装Code::Blocks的最新升级包。

    安装Code::Blocks的简体中文语言包。

    完成Code::Blocks的基本配置。

3.运行安装程序

下载得到一个执行的文件,双击后运行,请按照以下说明进行安装。

选择“Full/完整”安装,以免重要插件没有被安装上。

安装目标路径,不要带有空格,或者汉字;这一点并不是Code::Blocks的限制,而是因为mingw32里的一些命令行工具,似乎对长目录或带空格的目录支持有点小问题,我估计汉字目录也会出问题,但没试过。一句话,就装在根目录下的x(AB,C,D):\\CodeBlocks即可。

4.安装中文语言包

首先,请在 X:\\CodeBlocks\\share\\CodeBlocks\\ 建立一个子文件夹:locale,注意 locale 全为小写字母。简体汉字的语言包做了较大改进,不过仍然没改完,另外,一些插件在当前版本本来就无法汉化的,所以还有一部分内容是英语的。

点击下载d2school版Code::Blocks语言包。

下载后,请解压到前述的locale目录下,则locale目录下,应出现zh_CN和zh_TW两个子目录。重新启动Code::Blocks,点击主菜单的“Settings”,选择“Enviornment”。出现的对话框中,左边选中“View”,右边打勾“Internationalization (needs restart)”,并在后面的复合框中选中“Chinese (Simplified)”。确认退出本对话框。

5.必要配置

又分为两步,第一步用于检查系统环境变量,第二步用于检查Code::Blocks本身的配置。事实上,这也是很多类似IDE软件都需要做的准备工作之一。

虽然在多数情况下这两样配置在CodeBlocks安装以后,就已经正确配置上了。但是如果这两样配置有误,会带来Code::Blocks运行时的很多奇怪的问题,我们还是直接检查确保一下,同时加以了解。

检查并配置操作系统环境变量

在桌面上,鼠标右键点击“我的电脑”,选择弹出菜单中的“属性”。在属性对话框中,选中“高级”属性页。点击其下“环境变量”按钮,将新弹出一个对话框,如下图,选中“系统变量”下的“PATH”一行。然后点击其下“编辑”按钮,再次弹出一个对话框。

全选,并复制(Ctrl + C)第二行的内容。然后打开写字板程序,检查以下内容是否出现在复制过来的文字中:

X:\\CodeBlocks\\MinGW\\bin; X:\\CodeBlocks\\MinGW\\libexec\\gcc\\mingw32\\3.4.5;

其中“X:\\CodeBlocks\\”应为您本机安装Code::Blocks时的路径。

如果没有,将所缺少的部分,录入到配置内容,所插入位置最好微靠前一点,注意包括其中的分号。

修改完之后,别忘了复制修改后的全部内容,粘贴,替换一路“确定”,关掉各级对话框。

6.Code::Blocks全局编译器设置

请大家首先到 X:\\CodeBlocks\\MinGW\\bin下,搜索,检查有没有存在以下文件:

    mingw32-gcc.exe —— 这是C的编译器。

    mingw32-g++.exe —— 这是C++的编译器及动态库的连接器。

    ar.exe —— 这是静态库的连接器。

    gdb.exe —— 这里调试器。

    windres.exe —— windows下资源文件编译器。

    mingw32-make.exe —— 制作程序。

    都没有问题,请点击c::b主菜单“设置”(汉化前的"Settings"),这次选中“编译器和调试器设置...”。,出现的对话框中,右边选中“全局编译器设置”

参考技术A 刚开始学推荐使用小熊猫dev C++,配置较少,安装简单。 参考技术B Vscode集成一下就好

以上是关于在linux里,c程序的编辑、编译、调试的详细步骤是啥?的主要内容,如果未能解决你的问题,请参考以下文章

C/C++编程笔记:VC++6.0环境下调试 C语言 代码的方法和步骤

大家初学c语言用的编辑器和编译器是怎么下载安装详细步骤?

在cygwin下用gcc编译一个程序的详细步骤,求详解

如何在UltraEdit中编译和运行Java程序

请问linux下,gcc编译程序的过程(从读取源文件到制作可执行程序中间所有过程,越详细越好)

B站视频教程笔记基于VSCode和CMake实现C/C++开发 | Linux篇(gcc/g++)(安装配置使用详细教程)(VSCode教程)(CMake教程)(精!)