Learning and Coding

2016-06-22
makefile简单介绍

最近在看《Linux程序设计》这本书,里面讲到makefile相关的知识,所以想写篇博客记录一下自己的学习情况。由于这本书里有关makefile的内容比较少,只是一些初级的知识,而且不够系统性,所以看到这篇博客的朋友如果想系统性地了解makefile的知识可以去查阅一些写得更好的博客,或者去查看make命令的手册。好了,下面开始介绍makefile。

经常在Windows下写程序的朋友可能用的比较多的是IDE,它不需要你去设置太多的东西就可以编译、链接自己写的代码,虽然在Linux下也有IDE可以使用,但有时候需要自己手动编译和链接文件,比如在bash里手动输入命令去编译.c文件,链接.o文件。在编写小程序时,许多人都会在编辑完源文件后重新编译所有文件来重建应用程序。但对大型程序来说,使用这种简单的处理方式会带来一些明显的问题:编辑——编译——测试 这一循环周期变长,改动一小部分代码导致所有源文件重新编译是不可接受的。

比如说,你有3个头文件:a.h、b.h、c.h,3个C源文件main.c、2.c、3.c,具体情况如下:

1
2
3
4
5
6
7
8
9
10
11
/* main.c */
#include "a.h"
...
/* 2.c */
#include "a.h"
#include "b.h"
...
/* 3.c */
#include "b.h"
#include "c.h"
...

如果你修改了a.h文件,make工具检测到main.c、2.c包含了这个文件,在重新编译的时候就只会对main.c、2.c进行重新编译,而不会重新编译3.c这个文件,当项目中源文件多的时候可以减少很多重新编译的时间。当你写好makefile文件的时候,每次编译文件只需要输入make命令即可,省去了一条一条输入命令的时间,而且在需要修改命令的时候只需要对makefile文件的相应部分做出修改。
Read More

2016-06-12
无法登陆(在登陆界面输入密码后又跳转到登陆界面)

今天在登陆Ubuntu虚拟机的时候,输入密码无法登陆,反复跳转到登陆界面。在网上查询解决办法的时候,发现是用户Home目录下一个叫“.Xauthority”的文件的拥有者和组都变成了root,导致无法登陆。所以只要将这个文件的拥有者和组改成登陆用户名就行了。具体的做法如下:

  1. 开机后在登陆界面按下shift + ctrl + F1进入tty1命令行终端,使用自己的用户名和密码登陆。
  2. 进入用户Home目录,然后修改文件拥有者和组。
    1
    2
    $ cd ~ 
    $ sudo chown username:groupname .Xauthority
  3. 使用shift + ctrl + F7切换到图形登陆界面,再输入密码登陆就行了。
    具体原因请参考这篇文章http://www.2cto.com/os/201308/238991.html
Read More