首页 > 代码库 > 源码文件的编译
源码文件的编译
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 WorldThank 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
源码文件的编译
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。