实验目的:
能够安装某Linux发行版本(例如Red Hat)
了解Linux的启动过程
了解Linux文件的组织结构
熟悉X Window 环境
练习使用Linux 常用命令
熟练使用Linux的C语言开发环境
学习并掌握Linux 编译工具 gcc 的使用方法
(1)适应vi生成myfile.c文件(.c是c语言文件的后缀)
vi myfile.c
vi编译器的使用方法可以参考http://www.hdpfans.com/home.php?do=blog&id=68&mod=space&uid=32961
即1.系统自动进入文件后,按i进入插入模式
2.输入代码
3.按esc键进入命令模式
4.输入:wq退出并保存
(2)编译
老师给的代码有一定错误,老师故意的。。。
老师给的代码:
#include <linux/unistd.h>
int main( )
{
int i=getuid( ) ;
printf(“Hello world! This is my uid: %d\\n”, i ) ;
}
编译报错:
简单的错误还是可以改的,比如缺少return 0;include<stdio.h>但改后还是报错
warning: implicit declaration of function ‘getuid’ [-Wimplicit-function-declaration]
int i=getuid( ) ;
这是因为函数没有在头文件(.h)定义,这就导致编译的时候没法正确生成.o文件,因此填上头文件#include <unistd.h>
最后正确的代码应该是
#include <unistd.h>
#include <linux/unistd.h>
#include <stdio.h>
int main( )
{
int i=getuid( ) ;
printf("Hello world! This is my uid: %d\\n", i ) ;
return 0;
}
编译工具gcc
Red Hat Linux的编译器是gcc。gcc软件包支持C、C++。gcc的可执行文件在/usr/bin/gcc下,/lib和/usr/lib目录下是库文件。/usr/include目录下是头文件。
gcc编译常用格式为:
$gcc 源文件名↙
(例如:$gcc aaa.c↙,将生成默认可执行文件a.out)
或者 $gcc -o 目标文件名 源文件名↙
(例如:$gcc –o aaa aaa.c)
如果有些同学第(1)步保存文件出现报错
myfile.c: In function ‘main’:
myfile.c:8:3: error: stray ‘\342’ in program
printf(“Hello world! This is my uid: %d\\n”, i ) ;
^
那是因为直接复制,系统吧英文的"翻译成中文的“,改正即可
(3)运行
root@benben-virtual-machine:~# gcc -o test myfile.c
root@benben-virtual-machine:~# ./test
如果你上一步是运用的 $gcc -o 目标文件名 源文件名↙ 则运行用./目标文件名
(例如:$gcc –o aaa aaa.c)
如果是$gcc 源文件名,则运行为./a.out,a.out是运行自动产生的默认文件名。
如果运行报错,权限不够,请在运行前,改变一下.c文件的权限即可,如chmod 755 xx.c
权限具体可看https://www.cnblogs.com/sxdcgaq8080/p/7498906.html
编译链接可看https://www.cnblogs.com/smlile-you-me/p/7123595.html
整个过程:
root@benben-virtual-machine:~# vi myfile.c
root@benben-virtual-machine:~# gcc myfile.c
root@benben-virtual-machine:~# chmod 775 myfile.c
root@benben-virtual-machine:~# ./a.out
或者
root@benben-virtual-machine:~# gcc -o test myfile.c
root@benben-virtual-machine:~# ./test
此处因为我之前修改了myfile.c 的权限,所以第二个代码没有chmod命令,如果你的报错,记得填上哟
OK,完成啦,结果应该是Hello world! This is my uid: 0\nroot@benben-virtual-machine:~#
参考链接:
https://www.cnblogs.com/sxdcgaq8080/p/7498906.html
https://www.cnblogs.com/smlile-you-me/p/7123595.html
http://www.hdpfans.com/home.php?do=blog&id=68&mod=space&uid=32961