12-3-10关于gcc一些知识,如何编写makefile
2012-03-10 14:52
260 查看
1,phtread库不是inux默认的系统库,因此源码中编写pthread_create(),pthread_atfork(),在编译的时候都不需要人为的进行连接该库
gcc -o thread thread.c -lpthread
这里类似利用math.h中的pow函数一样,需要我们-lm
2,关于linux中利用c连接mysql数据库,
头文件需要包含#include"/usr/inlcude/mysql/mysql.h"
先编译:gcc -c main.c (生成目标文件)
在最后进行连接的时候gcc main.o -o main -L/usr/lib/mysql -lmysqlclient ( -L 指定libmysql.a,libmysql.so的库路径 -l表示链接这两个库)
ped: 如果需要Makefile中导入其他Makefile,可以include XXX,这里的XXX一般我们最好填写绝对路径。如果这里要同时引入几个,它们之间要用空格分开
否则,make命令进行执行的时候,会在当前目录寻找,而后会在make -I 路径 这个我们执行的路径中寻找。
如果想要include就算找不到路径也继续执行,不妨在include 前面添加-
3看一makefile例子
CC = gcc
TARGET = Server
RM = rm -f
OBJS = strategy.o thread.o Server.o
LIB_PATH = -lpthread -L/usr/lib/mysql/libmysql -lmysqlclient
CFLAGS = -I/usr/include/mysql -g
$(TARGET):$(OBJS)
$(CC) -o $(TARGET) $(OBJS) $(LIB_PATH)
$(OBJS):%.o:%.c
$(CC) -c $(CFLAGS) $< -o $@
clean:
-$(RM) $(TARGET) $(OBJS)
分析下相关语句: $(OBJS):%.o:%.c 此句表示将$(OBJS)中的.o的后缀文本替换为.c的后缀,即成为strategy.c thread.c Server.c
$< 表示依赖项的结果,即表示$(OBJS):%.o:%.c 执行完后的结果,等价为strateg.c thread.c Server.c
$@表示$(OBJS)
-$(RM) $(TARGET) $(OBJS) 前面必须为tab,-表示即使执行出现错误也要继续执行下去
关于makefile文本的制作,是自顶向下的顺序制作的。先是连用-o 连接各大目标文件,库文件
下面才开始进行-c -g进行源文件的编译 调式选项。此为编译阶段
最后的clean: 表示清空.o 执行文件。
gcc -o thread thread.c -lpthread
这里类似利用math.h中的pow函数一样,需要我们-lm
2,关于linux中利用c连接mysql数据库,
头文件需要包含#include"/usr/inlcude/mysql/mysql.h"
先编译:gcc -c main.c (生成目标文件)
在最后进行连接的时候gcc main.o -o main -L/usr/lib/mysql -lmysqlclient ( -L 指定libmysql.a,libmysql.so的库路径 -l表示链接这两个库)
ped: 如果需要Makefile中导入其他Makefile,可以include XXX,这里的XXX一般我们最好填写绝对路径。如果这里要同时引入几个,它们之间要用空格分开
否则,make命令进行执行的时候,会在当前目录寻找,而后会在make -I 路径 这个我们执行的路径中寻找。
如果想要include就算找不到路径也继续执行,不妨在include 前面添加-
3看一makefile例子
CC = gcc
TARGET = Server
RM = rm -f
OBJS = strategy.o thread.o Server.o
LIB_PATH = -lpthread -L/usr/lib/mysql/libmysql -lmysqlclient
CFLAGS = -I/usr/include/mysql -g
$(TARGET):$(OBJS)
$(CC) -o $(TARGET) $(OBJS) $(LIB_PATH)
$(OBJS):%.o:%.c
$(CC) -c $(CFLAGS) $< -o $@
clean:
-$(RM) $(TARGET) $(OBJS)
分析下相关语句: $(OBJS):%.o:%.c 此句表示将$(OBJS)中的.o的后缀文本替换为.c的后缀,即成为strategy.c thread.c Server.c
$< 表示依赖项的结果,即表示$(OBJS):%.o:%.c 执行完后的结果,等价为strateg.c thread.c Server.c
$@表示$(OBJS)
-$(RM) $(TARGET) $(OBJS) 前面必须为tab,-表示即使执行出现错误也要继续执行下去
关于makefile文本的制作,是自顶向下的顺序制作的。先是连用-o 连接各大目标文件,库文件
下面才开始进行-c -g进行源文件的编译 调式选项。此为编译阶段
最后的clean: 表示清空.o 执行文件。
相关文章推荐
- 10-12关于指针的一些知识
- 关于gcc、g++、gdb的一些知识
- 关于如何编写Makefile
- GCC:如何自己编写Makefile
- 关于编写Makefile的一些总结
- Linux下C语言编程基础知识--gcc编译器的使用、MakeFile文件的编写
- winform学习之-----关于按键操作的一些小知识(如何获取焦点所在的当前控件)20160623
- <2012 12 20> Gcc/ARM/Linux Kernel关于浮点运算的一些说明(很有用!)
- Makefile编写的一些小知识
- 12-2-22关于内存的一些知识
- 关于Android屏幕适配应该知道的一些知识
- 关于Mxnet的一些基础知识理解(1)
- 关于Donews的记忆---如何编写自定义函数GetItemAny,使其能从任何数据类型里取值
- 关于 CouchDB 的一些知识
- 关于构造函数的一些基本知识
- 关于de2-70的一些知识
- 关于重载和重写的一些小知识
- 关于一些新技术新知识的认识--silverlight
- 关于java core的一些知识
- 关于在学习知识和运用知识中的一些个人的见解(后续会持续更新)