用makefile编译生成.a文件(linux静态库),并编译进可执行文件中
2015-08-19 14:15
639 查看
文件列表:
在linux终端使用命令:
效果如下图
编译生成可执行文件
使用命令:
效果如下图
运行:
代码文件
/* 下列代码保存到 plus.cpp */ int my_plus(int x,int y) { return x + y; }
/* 下列代码保存到 minus.cpp */ int my_minus(int x,int y) { return x - y; }
/* 下列代码保存到 my_math.h */ int my_plus(int x,int y); int my_minus(int x,int y);
/* 下列代码保存到 lib_test.cpp */ #include"my_math.h" #include<stdio.h> int main() { printf("[my_plus ] = %d\n",my_plus(3,5)); printf("[my_minus] = %d\n",my_minus(3,5)); return 0; }
makefile文件
/* 下面内容保存到 lib.mak */ SHELL = /bin/sh CC = g++ AR = ar CFLAG = -O2 -W -Wall INCLUDE_PATH = -I. LIB_TARGET = ./libmath.a PLUS_OBJ = plus.o PLUS_SRC = ./plus.cpp MIN_OBJ = minus.o MIN_SRC = ./minus.cpp all : $(LIB_TARGET) $(PLUS_OBJ): $(PLUS_SRC) $(CC) $(CFLAG) $(INCLUDE_PATH) -c $(PLUS_SRC) $(MIN_OBJ): $(MIN_SRC) $(CC) $(CFLAG) $(INCLUDE_PATH) -c $(MIN_SRC) $(LIB_TARGET) : $(PLUS_OBJ) $(MIN_OBJ) $(AR) cq $@ $^ rm -f $(PLUS_OBJ) rm -f $(MIN_OBJ) clean: rm -f $(PLUS_OBJ) rm -f $(LIB_TARGET)
/* 下面内容保存到 app.mak */ SHELL = /bin/sh CC = g++ INCLUDE_PATH = -I. TEST_TARGET = ./test TEST_SRC = ./lib_test.cpp LDFLAGS := ./libmath.a all : $(CC) -g $(TEST_SRC) $(LDFLAGS) -o $(TEST_TARGET) $(INCLUDE_PATH) clean: rm -f $(TEST_TARGET)
编译连接
编译生成静态库:在linux终端使用命令:
make -flib.mak
效果如下图
编译生成可执行文件
使用命令:
make -fapp.mak
效果如下图
运行:
相关文章推荐
- Linux运行脚本作为守护进程的各种方法
- linux查看目录占用空间
- Linux主机之间同步文件
- Linux常用命令
- 应用 Valgrind 发现 Linux 程序的内存问题
- Linux运维工程师必须具备的技能
- Linux 命令 - 删除文件或目录 rm
- linux主机之间传输数据
- Linux下好玩的命令
- linux合并文件
- 在CentOS下搭建自己的Git服务器
- 64位ubuntu:arm-linux-gcc –v 提示找不到该文件或目录
- linux 命令 - 删除空目录 rmdir
- Linux Makefile
- linux 系统的虚拟机克隆后出现找不到eth0
- linux 命令 - 查看所在目录位置 pwd
- 在 CentOS 6.4上安装Erlang
- Linux下使用inotify实现对文件的监控
- linux 命令 - 切换目录cd
- WIN版的Jenkins Master加入LINUX的SLAVE节点,并作C++程序的集成交付