Linux下用gcc编译安装程序
来源:互联网 发布:好的算法书 编辑:程序博客网 时间:2024/05/26 15:54
一、基本概念:
1.Tarball:Tarball文件是将软件的所有源码文件先以tar打包,然后再以压缩技术来压缩,最常见的就是以gzip来压缩了。扩展名一般为*.tar.gz或*.tgz,有的是以bzip2压缩的扩展名为*.tar.bz2。
所以说Tarball就是一个软件包,解压后包含:①源代码文件 ②检测程序文件(configure或config) ③软件介绍和安装说明(INSTALL或README)
2.源程序变成软件的过程:①编码源代码文件 ②gcc编译器将源代码编译生成目标文件*.o ③gcc编译器将多个目标文件和所需要的外部库文件等资源文件链接制作成二进制可执行文件 ③执行可执行文件安装成软件即可使用
3.什么是configure与make?
configure是软件开发商编写的检测程序,用来检测用户操作环境以及该操作环境是否有软件开发商所需要的其他功能,主要监测数据有以下:
①是否有合适的编译程序可以编译本软件的程序代码
②是否已经存在本软件所需要的函数或其他需要的相关软件
③操作系统是否适合本软件。包括Linux的内核版本
④内核的头定义文件(header include)是否存在(驱动程序必须要的检测)
configure或config检测程序检测完毕后会生成makefile规则文件,makefile里面记录了源码如何编译的详细信息,
make是一个程序,运用make的简单命令可以实现需要大量编译命令才能实现的功能,即可以简化编译过程里面所执行的命令,
make程序会自动去找makefile文件,读取里面的内容并执行操作。
make会自动识别源码是否是最新的而是否需要自动更新操作(直接编译链接成新的可执行文件)
二、gcc编译常用命令
1.不带参数,直接编译链接成二进制文件 a.out
# gcc hello.c
2.仅编译成目标文件,不制作链接,*.o
# gcc -c hello.c
3.仅编译成目标文件并且优化
# gcc -O hello.c -c
4.将目标文件链接成可执行文件,小写字母o后边这个hello1是自定义可执行二进制文件名
# gcc -o hello1 hello.o
5.将多个目标文件链接成可执行文件
# gcc -o test test1.o test2.o
6.加入额外函数库链接,C源代码中使用了sin函数
# gcc sin.c -lm -L/lib -L/usr/lib
其中:-l:是加入某个库函数(library)的意思
m:则是libm.so这个函数库,其中,lib与扩展名(.a或.so)不需要写。
所以-lm就是指加入函数库libm.so或libm.a的意思
-L:L指后边接的是函数库所在的路径,不写就是用默认的路径/lib 与/usr/lib
-I:I后边接的是include了的库路径,不写就是使用默认的路径/usr/include/stdio.h
- Linux下用gcc编译安装程序
- Linux下用gcc编译c程序
- linux下编译安装gcc
- linux下编译安装gcc
- linux下GCC编译C程序
- linux下gcc编译c程序
- linux下GCC编译C程序(一)
- Linux下安装gcc交叉编译工具
- Linux下编译安装GCC 4.9.2
- linux GCC程序编译
- Linux下编译GCC
- linux下编译GCC
- Linux下Gcc编译
- Linux安装编译GCC
- 安装linux下的编译链(arm-linux-gcc)
- Linux下的GCC程序编译(IMUDGES)
- Linux下编译调试C程序(GCC,GDB)
- Linux下gcc编译C程序指令小结
- 容器的理解
- Quick-cocos2d-x的MVC架构之Views研究
- HOG特征
- Spring 声明式事务,propagation属性列表
- 图像卷积计算(存档)
- Linux下用gcc编译安装程序
- 谈谈小松如何用36天时间将两个关键词全部做到百度第一
- android ListView向上滑动隐藏标题,下拉显示标题栏
- linux arm mmu基础
- Quick-cocos2d-x的MVC架构之有限状态机研究
- 项目经理 VS 产品经理 (工作职责和要求)
- LBP特征
- HDU 1506解题报告
- Android,Java环境下获取apk的公钥