首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个简单的makefile只构建一个源文件?

为什么这个简单的makefile只构建一个源文件?
EN

Stack Overflow用户
提问于 2018-09-06 02:38:25
回答 1查看 58关注 0票数 2

我有文件X.cX.ispc,我想使用makefile构建一个共享库X.so

然而,下面这个简单的makefile只给我提供了:

代码语言:javascript
复制
gcc -m32 -c X.c -o X.c.o
ispc -O2 --arch=x86 --target=sse4-i32x4 X.ispc -o X.ispc_o
gcc -m32 -Wl,-hash-style=sysv -fno-stack-protector -fPIC -nostdlib -shared X.c.o -o X.so

最后一步中没有X.ispc_o。我能知道我做错了什么吗?

代码语言:javascript
复制
ISPC=ispc
ISPCFLAGS=-O2 --arch=x86 --target=sse4-i32x4

CC = gcc
CFLAGS = -m32 -Wl,-hash-style=sysv -fno-stack-protector -fPIC -nostdlib -shared

default: so

.PHONY: clean

clean:
        /bin/rm -rf objs *.o

obj := $(patsubst %.c, %.so, $(wildcard *.c))
so: $(obj)

%.so: %.c.o %.ispc_o
        $(CC) $(CFLAGS) $< -o $@

%.ispc_o: %.ispc
        $(ISPC) $(ISPCFLAGS) $< -o $@

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

回答 1

Stack Overflow用户

发布于 2018-09-06 04:30:32

自动变量$<是第一个先决条件的名称。你想要的是$^。这将扩展为所有先决条件的名称的空格分隔列表。如果您的信息页面已安装

代码语言:javascript
复制
info make 'Automatic Variables'

将为您提供一个完整的变量列表,如下所示。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52192764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档