文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>gcc与make

gcc与make

时间:2005-11-07  来源:我是一个贼

首先要说的是我并不懂c语言,我写这个的目的只是让大家了解一下用源码安装程序的一些基础,如有不对的地方,还请各位修正

首先写一个C程序,经典的hello world
[root@qwcn source]# vi hello.c
#include <stdio.h>
int main(void)
{
        printf("hello,world! ");
}

用gcc编译成可执行程序,a.out是默认的文件名,并测试
[root@qwcn source]# gcc hello.c
[root@qwcn source]# ls
a.out  hello.c
[root@qwcn source]# ./a.out
hello,world!

这个程序只有文件组成,假如一个程序是由多个程序组成的,那该如何操作呢?请继续看底下

先写两 个c文件,功能是输出两行文字,并且在program1调用program2
[root@qwcn source]# vi program1.c
#include <stdio.h>
int main(void)
{
        printf("this is program 1 ");
        program2();
}

[root@qwcn source]# vi program2.c
#include <stdio.h>
int program2(void)
{
        printf("this is program 2 ");
}

编译程序,并生两.o个文件
[root@qwcn source]# gcc -c program1.c program2.c
[root@qwcn source]# ls
hello.c  hello.o  program1.c  program1.o  program2.c  program2.o

 将产生的两个o文件合并成一个执行程序program,并执行
[root@qwcn source]# gcc -o program program1.o program2.o
[root@qwcn source]# ls
hello.c  hello.o  program  program1.c  program1.o  program2.c  program2.o
[root@qwcn source]# ./program
this is program 1
this is program 2
[root@qwcn source]#
 
看见了吧,程序执行了

还有一个问题,刚刚我们编译这些程序的时候,这么多步骤是不是很烦,不知你有没有注意到,我们平时安装程序的时候一般都是confgiure make make install这三个步骤,那如何用来实现我们上面的编译过程呢?请继续往下 ,现在我将上面三个程序链接成一个程序main,不过呢先得编辑一 下program1.c这个文件, 同一个程序不能有两个main,内容如下:
int program1(void)
{
        printf("this is program 1 ");
        program2();
}

还要修改一下hello.c这个文件,调用program1
#include <stdio.h>
int main(void)
{
        printf("hello,world! ");
        program1();
}

首先要创建makefile文件(在用源码安装程序的目录下,一般都会有这个文件,你可以打开看看里面的内容是什么)

其中main的就是最后输出的可执行文件名
[root@qwcn source]# vi makefile
main:hello.o program1.o program2.o
        gcc -o main hello.o program1.o program2.o -lm

先删除所有文件
[root@qwcn source]#rm -rf *.o
[root@qwcn source]# ls
hello.c  makefile  program1.c  program2.c
[root@qwcn source]#

用make进行编译,完了之后,一 个可执行程序就出来
[root@qwcn source]# make
cc    -c -o hello.o hello.c
cc    -c -o program1.o program1.c
cc    -c -o program2.o program2.c
gcc -o main hello.o program1.o program2.o -lm
[root@qwcn source]# ls
hello.c  main      program1.c  program2.c
hello.o  makefile  program1.o  program2.o
[root@qwcn source]# ./main
hello,world!
this is program 1
this is program 2
[root@qwcn source]#

至于make install,make clean等,都可以通过修改这个文件实现,也可以使用变量,我里面全用的是变量,当然,简单一点的程序没必要这么麻烦,我这里只是为了说明可以使用变量,内容如下:
OBJPAR=-lm
OBJS=hello.o program1.o program2.o
OBJNAME=hello
OBJPATH=/bin/
${OBJNAME}:${OBJS}
        gcc -o ${OBJNAME} ${OBJS} ${OBJPAR}
clean:
        rm -f ${OBJNAME} ${OBJS}
        rm -f ${OBJPATH}${OBJNAME}
install:
        cp ${OBJNAME} ${OBJPATH}

make之后,就产生了这个hello可执行程序,如果用make install,则可以将复制到/bin/目录下,以后运行 时直接输入hello就行了

好了, 动手试试吧, 也许你会有更多的发现

相关阅读 更多 +
排行榜 更多 +
宝宝情商养成宝宝巴士

宝宝情商养成宝宝巴士

休闲益智 下载
燥热手机版

燥热手机版

飞行射击 下载
巨人狙击手安卓版

巨人狙击手安卓版

飞行射击 下载