码迷,mamicode.com
首页 > 其他好文 > 详细

源码文件的编译

时间:2014-10-12 00:04:57      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   文件   sp   div   on   

1. 开放源码、编译程序和可执行文件

  开放源码:程序代码,写给人类看的程序语言,机器并不识别,所以无法执行。

  编译程序:将开放源码转译成机器看的懂的语言。

  可执行文件:经过编译程序变成二进制程序后机器看得懂的可执行的文件。

2. 程序的编译

  1)单文件的编译运行

 //hello.c
 #include<stdio.h>
 
 int main()
 {
     printf("Hello World\n");
     return 0;
 }

   开始编译

gcc hello.c

   生成文件可执行文件a.out, 运行a.out

./a.out

  输出运行结果

Hello World

  2) 多文件的编译

// thanks.c
#include<stdio.h>
int main(void)
{
    printf("Hello World\n");
    thanks2();
    return 0;
}
// thanks2.c
#include<stdio.h>
void thanks2()
{
    printf("Thank you!\n");
}

  编译文件:

gcc -c thanks.c thank2.c

  生成两个目标文件 thanks.o, thanks2.o.

  进行链接 :

gcc -o thanks thanks.o thanks2.o

  生成可执行文件 thanks, 执行thanks

./thanks

  输出结果

Hello World
Thank you!

3. 调用外部库函数

  假如要在函数中调用sin函数, 由于sin函数是在libm.so这个函数库中, 就需要在编译与链接的时候把libm.so函数库链接进执行文件

gcc sin.c -lm -L/lib -L/user/lib

  其中

  -l: 是加入某个函数库的意思

  m: 则是加入libm.so或者libm.a函数库的意思. (lib与扩展名.a, .so不需要写)

  -L: 则表示在后接的路径/lib 和/user/lib中搜索函数库(事实上,这两个函数库路径是默认的, 可以略去)

  此外, 对于源文件中的 #include <stdio.h>, 需要在/usr/include/stdio.h 找到.当头文件放在其他位置时,就需要通过如下语句来读取头文件放置的目录

gcc sin.c -lm -I/user/include

 

源码文件的编译

标签:style   blog   color   io   os   文件   sp   div   on   

原文地址:http://www.cnblogs.com/junxie/p/4018487.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!