同一文件下多个.c文件Makefile制作Readme

CC =gcc

TARGET = test_main

OBJS = 1.o 2.o 3.o 4.o 5.o 
SRC = $(OBJS:%.o=%.c)

$(TARGET):$(OBJS)
	$(CC) -o $(TARGET) $(OBJS)

$(OBJS):%.o:%.c
	$(CC) -c $< -o $@   //$(CC) -c $<

clean:
	rm *.o (TARGET) 

首先,
$@:目标对象
$^:所有依赖对象
$<:第一个依赖对象

该目录下总共有6个.c文件
1.c 2.c 3.c 4.c 5.c test_main.c
**SRC = $(OBJS:%.o=%.c)**该行作用相当于
SRC = 1.c 2.c 3.c 4.c 5.c
1

 $(OBJS):%.o:%.c
 	$(CC) -c $< -o $@

相当于

 $(OBJS):$(SRC)
 	$(CC) -c 1.c 2.c 3.c 4.c 5.c -o 1.o 2.o 3.o 4.o 5.o 

2

$(TARGET):$(OBJS)
	$(CC) -o $(TARGET) $(OBJS)

相当于

$(TARGET):$(OBJS)
	$(CC) -o test_main  1.o 2.o 3.o 4.o 5.o 

Makefile的编写 我觉得就是 gcc 命令
介绍下gcc

gcc -参数
-I(i的大写): 指定头文件路径(绝对路径/相对路径都可以)
-L:指定连接的动态库或者静态库路径(绝对路径/相对路径都可以) 
-fPIC:要生成动态库.o文件要加 -fPIC
-shared: 生成.so文件

gcc -c   1.c                         //生成1.o 文件
gcc -o main  main.c -I ./include/    //编译

生成动态库以及链接动态库
gcc -Wall -fPIC -o libmytest.o -c libmytest.c     
gcc -shared -o libmytest.so  libmytest.o

gcc -Wall -fPIC -shared libmytest.c -o libmytest.so

方法1:
gcc -o test_main test_main.c  ./libmytest.so   //连接生成的  .so文件
方法2:
需将libmytest.so复制到系统lib下
gcc -o test_main.c   test_main  -lmytest -L ./.
 方法三:
gcc -o test_main.c  test_main   -I./include  -L./lib   -lmytest  
如果libmytest.so在当前路径下的lib中,则能编译过,但运行却好不到这个库
需添加环境变量	export LD_LIBRARY_PATH=路径
或者 gcc -o test_main.c  test_main   -I./include  -L./lib   -lmytest -Wl,R lib库路径
																	 -Wl,rpath=lib库路径路径
makefile 失效,查看  ls ./config/
						设置 make config T=x86_64-native-linuxapp-gcc


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值