gcc命令以及makefile文件
(一)makefile里涉及到的gcc命令
gcc -I./inc:指定头文件寻找目录
将按照 ./inc --> /usr/include --> /usr/local/include的顺序寻找头文件
gcc -L./lib:指定库文件的寻找目录
将按照 ./lib --> /usr/lib --> /usr/local/include的顺序寻找库文件
gcc -ltest
将使用libtest.so动态链接库或libtest.a静态链接库,优先使用libtest.so
gcc -static -ltest
将强制使用libtest.a静态链接库
编译生成动态链接库:
gcc -o *.c -fPIC -c *.c //-fPIC指明生成和地址无关的目标文件
gcc -o libtest.so -shared *.o //在连接过程中指定-shared,即生成共享形式的目标文件
gcc -o target -L./lib -ltest -Wl,-rpath=./lib //-Wl,-rpath=./lib指定运行时的库文件路径
生成静态库:
gcc -o *.o -c *.c
ar crs libtest.a *.o //libtest.a可以看做是将.o文件进行了打包
gcc -o target -L./lib -ltest
(二)makefile文件
1 只有一个或多个源文件
CC=gcc
CFLAGS=-Wall -std=gnu99 TARGET=test
SRCS=test.c
OBJS=${SRCS:.c=.o} ${TARGET}:${OBJS}
${CC} -o $@ $^
clean:
rm -rf ${TARGET} ${OBJS}
%.o:%.c
${CC} ${CFLAGS} -o $@ -c $<
2 源文件在src下,头文件在inc下
CC=gcc
CFLAGS=-Wall -std=gnu99
INC=-I./inc TARGET=test
SRCS=./src/test.c ./src/test_add.c ./src/test_min.c
OBJS=${SRCS:.c=.o} ${TARGET}:${OBJS}
${CC} -o $@ $^
rm -rf ${OBJS}
clean:
rm -rf ${TARGET} ${OBJS} %.o:%.c
${CC} ${FLAGS} ${INC} -o $@ -c $<
3 链接阶段添加动态链接库
CC=gcc
CFLAGS=-Wall -std=gnu99 TARGET=test
SRCS=./src/test.c ./src/test_add.c
OBJS=${SRCS:.c=.o}
INC=-I./inc
DLIBS=-lm ${TARGET}:${OBJS}
${CC} ${DLIBS} -o $@ $^
rm -rf ${OBJS} clean:
rm -rf ${OBJS} ${TARGET} %.o:%.c
${CC} ${FLAGS} ${INC} -o $@ -c $<
4 编译动态链接库
CC=gcc
CFLAGS=-Wall -std=gnu99 TARGET=libtest.so
SRCS=./src/test.c ./src/test_add.c ./src/test_min.c
OBJS=${SRCS:.c=.o}
INC=-I./inc ${TARGET}:${OBJS}
${CC} ${CFLAGS} -shared -o $@ $^
rm -rf ${OBJS}
clean:
rm -rf ${OBJS} ${TARGET} %.o:%.c
${CC} ${CFLAGS} ${INC} -o $@ -fPIC -c $<
gcc命令以及makefile文件的更多相关文章
- 简介make命令和makefile文件
一.为什么要用到 make 命令和 makefile 文件 在 Linux 下编写一个程序,每次编译都需要在命令行一行一行的敲命令.如果是一个很小的程序还好说,命令不怎的复杂,编译速度也挺快,但是对于 ...
- make命令和makefile文件
make命令和makefile文件的结合提供了一个在项目管理领域十分强大的工具,它不仅常被用于控制源代码的编译,而且还用于手册页的编写以及将应用程序安装到目标目录. makefile文件由一组依赖关系 ...
- Shell脚本——make命令和Makefile文件【转】
https://blog.csdn.net/twc829/article/details/72729799 make命令是一个常用的编译命令,尤其在C/C++开发中,make命令通过makefile文 ...
- 【C编程基础】make命令和makefile文件
1.关于程序的编译和链接 一般来说,无论是C.C++首先要把源文件编译成中间目标文件即 Object File(windows为.obj文件,unix为.o文件),这个动作叫做编译(compile). ...
- 利用 autoconf 和 automake 生成 Makefile 文件
一.相关概念的介绍 什么是 Makefile?怎么书写 Makefile?竟然有工具可以自动生成 Makefile?怎么生成啊?开始的时候,我有这么多疑问,所以,必须得先把基本的概念搞个清楚. 1.M ...
- make命令以及makefile
make命令以及makefile使用RCS与CVS进行源代码控制编写手册页使用patch与tar发布软件开发环境 多源代码的问题 当我们编写小程序时,许多人都是简单的在编辑后通过重新编译所有的文件重新 ...
- 工程管理之makefile与自动创建makefile文件过程
(风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自动编译和链接使用的环境 想知道到Linux Makefile系统的 ...
- 单文件夹下的C程序如何编写Makefile文件
通过学习已经学会了GCC的一些基础的命令,以及如何将C语言源代码编译成可执行文件. 我们已经知道在linux环境下编译源码时,常会有以下三个步骤: ./configure make make clea ...
- project管理之makefile与自己主动创建makefile文件过程
(风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自己主动编译和链接使用的环境 想知道到Linux Makefile系 ...
随机推荐
- HDU 4635 - Strongly connected(2013MUTC4-1004)(强连通分量)
t这道题在我们队属于我的范畴,最终因为最后一个环节想错了,也没搞出来 题解是这么说的: 最终添加完边的图,肯定可以分成两个部X和Y,其中只有X到Y的边没有Y到X的边,那么要使得边数尽可能的多,则X部肯 ...
- mybatis generator 使用
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- RSA客户端js加密服务器C#解密(含源码)
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 我的Android开发相关文章
Pro Android学习笔记: Pro Android学习笔记(一零七):2D动画(2):layout渐变动画 2014.7.25 Pro Android学习笔记(一零六):2D动画(1):fram ...
- debian安装mono环境
官网 http://pkg-mono.alioth.debian.org/ 在/etc/apt/sources.list 加上 deb http://debian.meebey.net/pkg-mon ...
- 【转】补充说明:关于Beaglebone black上debian无图形界面的问题及QT的窗口示例
有个兄弟发了一个站内的私信给我,内容如下: 时间:2014-03-05 09:08:19 大哥,debian 的BBB版本没有图形界面吧 我安装后只有文本界面 我突然意识到,我前面有没有说清楚的地方, ...
- 配置servers时,错误:Setting property 'source' to 'org.eclipse.jst.jee.server:hczm' did not find a matching property
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.e ...
- 玩转Android之数据库框架ActiveAndroid的使用
ActiveAndroid是一个开源的数据库框架,使我们在Android中使用数据库变得更为简单,今天我们就来看看这个数据库框架的使用. 1.引入ActiveAndroid 首先创建我们自己的项目,在 ...
- 移动终端学习一:css3 Media Queries简介
移动终端学习之一 css3 Media Queries简介 1.简介 别人写过的我就不重复了,来个链接:http://www.w3cplus.com/content/css3-media-querie ...
- Linux coredump学习笔记
初学者笔记:linux的程序在发生异常情况下,会导致进程down,多数服务器会设置生成core文件,本人在实际运营过程中发生过进程不断core,被自动监控拉起,过段时间有core的情况,进而导致磁盘被 ...