
我们在Ubuntu 18.04 LTS系统上运行了本文中提到的步骤和命令。
我们将使用Linux命令行工具Terminal,以编译一个简单的C程序。 要打开终端,您可以使用Ubuntu Dash或Ctrl + Alt + T快捷方式。
第1步:安装build-essential软件包
为了编译和执行C程序,您需要在系统上安装必要的软件包。 在Linux终端中以root用户身份输入以下命令:
sudo apt-get install build-essential
系统会要求您输入root用户密码安装过程将在此之后开始。 请确保您已连接到互联网。
第2步:编写一个简单的C程序
安装必要的软件包之后,让我们编写一个简单的C程序。
打开Ubuntu的图形文本编辑器,将以下示例程序写入或复制到其中:
#include<stdio.h>
int main()
{
printf("nA sample C program www.linuxidc.comnn")
return 0
}
然后使用.c扩展名保存文件。 在这个例子中,我将我的C程序命名为linuxidc.c
或者,您可以通过gedit中的终端编写C程序,如下所示:
gedit linuxidc.c
这将创建一个.c文件,您可以在其中编写和保存程序。
第3步:使用gcc编译C程序
在终端中,输入以下命令以生成您编写的程序的可执行版本:
句法:
$ gcc [programName].c -o programName
示例:
$ gcc linuxidc.c -o linuxidc
楼上的意思是,你拥有源码,自行编译生成了汇编文件,你当然可以查看汇编代码;但是如果你得到的是一份二进制的文件,obj、或者其他的executable file,你没有其源码,这个时候你想分析其文件信息以及汇编源码,只有通过上述命令了 。。。这个有点像Windows下面的逆向工程(Linux下多开源,因此win下面逆向工程较多也较有意义)。
举几个例子:
objdump -x obj 以某种分类信息的形式把目标文档的数据组织(被分为几大块)输出
objdump -t obj 输出目标文档的符号表
objdump -h obj 输出目标文档的section概括
-----------------------------------------------------------------------
你应该man一下objdump的,你就知道它具体用途了。
windows下面类似的工具有微软VS中自带的dumpbin.exe
dumpbin xx.exe /exports >exports.txt
(gdb) p gr->gr_name$19 = 0x4dbffff4 <Address 0x4dbffff4 out of bounds>
我试了一下 由于第2此循环得到的指针不对
把这句话去掉就没问题了
//printf("%-10s",gr->gr_name)
所以你看看你上面的 gr=getgrgid(IFo.st_gid)函数调用是不是有问题
比较忙 没仔细给你调试
你要多用gdb哦
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)