《UNIX环境高级编程》第三版编程环境搭建

简而言之,如何让书上的例程跑起来。我使用的环境是ubuntu18.04.2

1.书上的大多数代码都要包含apue.h,网上有很多版本,亲测还是去原版官网下最靠谱。(话说自己好像已经养成习惯每次拿到一本书先把封面序言什么的看一遍然后去官网找配套资源了,虽然这本书上面并没有写官网网址)

2.然后就可以参考这篇博客
https://blog.csdn.net/t910974949/article/details/85387484

可能出现它说你make未安装的情况,根据命令行提示把make安装了就行

这篇博客的第五步很重要,但它之后就说的不太清楚了。所以我们去参考下一篇博客。

3.https://blog.csdn.net/freestyle4568world/article/details/39269129

sudo cp ./include/apue.h /usr/include/

命令解释 cp是复制命令,上面的命令中跟了两个参数,意思是把 ./include/apue.h 复制到 usr/include/去

这篇博客就把为什么要做这个复制解释的很清楚,但他还没告诉我们gcc编译那句什么意思

gcc -o ls1 ls1.c -lapue

gcc -o 意思是编译。然后是第一个参数ls1,这个是目标文件名。然后是ls1.c,这个是源代码文件。最后是 -lapue,这个博客里写了,就是我们刚刚复制的那个文件,编译要用到它。整个命令执行的结果就是在当前目录下生成了一个名为ls1的可执行文件。

然后我怎么执行这个文件呢。。。好像各种运行方式都会出问题诶。。。

4.先看书上的执行语句

./a.out /dev

什么意思呢?其实上面一句命令由两部分组成。先是 ./a.out 这是说执行当前目录下的a.out文件。书上编译生成的文件是a.out,但我们按照第一篇博客来的话就是ls1喽(注意我们生成的文件没有任何扩展名)。第二部分是/dev,其实那句的这两部分之间是有一个空格的。这个/dev其实是一个参数,我们可以看看源代码

int main(int argc,char *argv[])

argc的意思是程序名和参数数量之和,而argv是一个字符串,我们就是要展示出argv这个字符串的目录,所以我们把 ”/dev“这个字符串传进去,程序执行时就会显示出/dev的目录。所以我们的执行命令就该这么敲

./ls1 /dev

这样我们就终于把书上的第一个例子跑起来啦,可以看到/dev的目录还蛮长的。

不过话说回来,这个dev文件夹在哪呢?

5.我们打开桌面上的文件图标,看到的是主文件夹,里面有“公共的”,“模板”,“视频”等子文件夹,但别说dev了,连之前复制过去的usr文件夹都找不到。

我们点一下左边菜单栏的其他位置,可以看到有一个计算机选项,点进去。

诶一个诡异的目录就出来了,里面有“bin”,“boot”,“dev”,"usr"等子文件夹,我们之前操作的文件夹就是这里这些了。

这个目录和之前的主文件夹目录又是什么关系呢??

6.没有第6了,我只是个刚把unix书上第一个例程跑出来的小渣渣,我要滚回去继续学习了

猜你喜欢

转载自blog.csdn.net/fwhdzh/article/details/88358958