帮忙解释下下面的makefile,谢谢
LIBS:=libvtss_switch.soLIBO:=vtss_switch.ovtss_switch_ext.oPROG:=portmonportcfgvlancf...
LIBS := libvtss_switch.so
LIBO := vtss_switch.o vtss_switch_ext.o
PROG := portmon portcfg vlancfg inject
all: $(LIBS) $(PROG)
$(LIBO): CFLAGS += -fPIC
libvtss_switch.so: $(LIBO)
$(CC) -shared -o $@ $^
$(PROG): %: %.c $(LIBS)
$(CC) -Wall $(CFLAGS) $@.c -o $@ $(LIBS)
这句是什么意思$(LIBO): CFLAGS += -fPIC, 为什么依赖文件是CFLAGS += -fPIC
$(CC) -shared -o 这样可以生成动态库?
$(CC) -Wall $(CFLAGS) $@.c -o $@ $(LIBS) 包含库的时候为什么不用 -l$(LIBS)
对makefile理解不是很深入,帮忙解释下,谢谢 展开
LIBO := vtss_switch.o vtss_switch_ext.o
PROG := portmon portcfg vlancfg inject
all: $(LIBS) $(PROG)
$(LIBO): CFLAGS += -fPIC
libvtss_switch.so: $(LIBO)
$(CC) -shared -o $@ $^
$(PROG): %: %.c $(LIBS)
$(CC) -Wall $(CFLAGS) $@.c -o $@ $(LIBS)
这句是什么意思$(LIBO): CFLAGS += -fPIC, 为什么依赖文件是CFLAGS += -fPIC
$(CC) -shared -o 这样可以生成动态库?
$(CC) -Wall $(CFLAGS) $@.c -o $@ $(LIBS) 包含库的时候为什么不用 -l$(LIBS)
对makefile理解不是很深入,帮忙解释下,谢谢 展开
2013-01-07
展开全部
这句是什么意思$(LIBO): CFLAGS += -fPIC, 为什么依赖文件是CFLAGS += -fPIC
不是跟在目标后面的就一定是依赖文件,这里是表示目标变量。就是在执行$(LIBO)目标时,把CFLAGS这个变量增加赋值 -fPIC
$(CC) -shared -o 这样可以生成动态库?
可以的,这个是标准语法,详见man gcc
$(CC) -Wall $(CFLAGS) $@.c -o $@ $(LIBS) 包含库的时候为什么不用 -l$(LIBS)
这种做法不规范,直接把库文件当做目标文件链接,但是也可以这么干。正规的使用-l的话,那也不是-l$(LIBS),应该是-lvtss_switch,并且要指定库路径-L./,动态库的引用命名是有规范的,前面的lib和后缀so都是要省略的。
你的疑问不仅仅是makefile语法,还涉及到编译和链接的语法,好好去看看英文文档吧。
不是跟在目标后面的就一定是依赖文件,这里是表示目标变量。就是在执行$(LIBO)目标时,把CFLAGS这个变量增加赋值 -fPIC
$(CC) -shared -o 这样可以生成动态库?
可以的,这个是标准语法,详见man gcc
$(CC) -Wall $(CFLAGS) $@.c -o $@ $(LIBS) 包含库的时候为什么不用 -l$(LIBS)
这种做法不规范,直接把库文件当做目标文件链接,但是也可以这么干。正规的使用-l的话,那也不是-l$(LIBS),应该是-lvtss_switch,并且要指定库路径-L./,动态库的引用命名是有规范的,前面的lib和后缀so都是要省略的。
你的疑问不仅仅是makefile语法,还涉及到编译和链接的语法,好好去看看英文文档吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询