#ldd命令+生成的执行文件 可查看该文件链接了哪些库(环境变量下设置和系统目录的库,编译指定的库找不到的,提示not found,但是编译器指定的位置没关系)
#以下只是参考
#C和CPP混用,且不是弄成so的形式,有点不好
CC=g++
NAME=myapp
SRCS=main.cpp\
udp.c
TOBJS=$(SRCS:.cpp=.o)
OBJS=$(TOBJS:.c=.o)
start:$(OBJS)
#-shared 表示以动态库的方式生成
#-L.(点表示在当前目录下找,系统目录不用) -l+so文件名(so文件名省略lib前缀和so后缀)
#如下表示在当前目录下链接 liba.so文件
$(CC) -o $(NAME) $(OBJS) -L. -la
.cpp.o:
#-D表示宏定义如-DMYLINUX定义了MYLINUX宏
#UNIX下的so文件(类似windows的dll),开头必须是lib如liba.so
#-fPIC 表示生成的文件不与位置相关( 仍然放在当前目录下,但是函数没有绝对偏移地址,调用它的地方自己决定)
$(CC) -o $@ -c $< -DMYLINUX
.c.o:
$(CC) -o $@ -c $< -DMYLINUX
clean:
rm -rf $(OBJS)
MakeFile示例
最新推荐文章于 2022-12-12 01:19:58 发布