gpt4 book ai didi

compilation - Makefile似乎忽略了%.o通配符

转载 作者:行者123 更新时间:2023-12-02 10:51:59 25 4
gpt4 key购买 nike

我目前正在尝试在Snow Leopard上编译Julia语言解释器-确实给了我一段时间,但我认为我几乎已经明白了。

最新的障碍是以下错误:

make: *** No rule to make target `jltypes.o', needed by `/Users/arman/julia/usr/lib/libjulia-release.dylib'.  Stop.

makefile的相关部分如下所示:
SRCS = \
jltypes gf ast builtins module codegen interpreter \
alloc dlload sys init task array dump toplevel jl_uv jlapi profile
...
OBJS = $(SRCS:%=%.o)
...
%.o: %.c $(HEADERS)
@$(PRINT_CC) $(CC) $(CPPFLAGS) $(CFLAGS) $(SHIPFLAGS) -DNDEBUG -c $< -o $@
%.do: %.c $(HEADERS)
@$(PRINT_CC) $(CC) $(CPPFLAGS) $(CFLAGS) $(DEBUGFLAGS) -c $< -o $@
%.o: %.cpp $(HEADERS)
@$(PRINT_CC) $(CXX) $(call exec,$(LLVM_CONFIG) --cxxflags) $(CPPFLAGS) $(CXXFLAGS) $(SHIPFLAGS) -c $< -o $@
%.do: %.cpp $(HEADERS)
@$(PRINT_CC) $(CXX) $(call exec,$(LLVM_CONFIG) --cxxflags) $(CPPFLAGS) $(CXXFLAGS) $(DEBUGFLAGS) -c $< -o $@
...
$(BUILD)/$(JL_LIBDIR)/libjulia-release.$(SHLIB_EXT): julia.expmap $(OBJS) flisp/libflisp.a support/libsupport.a $(LIBUV)
@$(PRINT_LINK) $(CXX) $(SHIPFLAGS) $(OBJS) $(RPATH_ORIGIN) -shared -o $@ $(LDFLAGS) $(LIBS) $(SONAME)
$(INSTALL_NAME_CMD)libjulia-release.$(SHLIB_EXT) $@

一切似乎都正确到位。据我了解,寻找 jltypes.o规则时,Make应该使用 %.o规则;但是,显然它根本找不到规则。

使我发疯的是,它可以在Lion上正常编译。我已经比较了makefile,它们的包含和Make程序本身,但是没有用。这是我对Makefile的第一次亲密体验,因此,在此先感谢您的耐心配合和帮助,如果需要添加任何其他信息,请告知我。

最佳答案

没有%.o规则。有一个%.o: %.c $(HEADERS)(及其配套的cpp)规则。这意味着它可以使用jltypes.ojltypes.c 构建$(HEADERS) (如果可以找到的话)。由于源文件可能在两个系统上都存在,因此我假设头文件的列表计算方法不同(错误)。

请注意,makepp的cvs版本最近才获得了一个新的选项变量MAKEPP_DEBUG,这使它可以编写有关这些内容的详细信息。可以通过实用程序makepplog查看它们。

makepp还有更多。除了完成GNU make几乎所有的工作外,还有很多有用的事情,甚至可以使用一些Perl编程来扩展makefile。

关于compilation - Makefile似乎忽略了%.o通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18425535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com