关于文件“Makefile”的修改时间在将来 XXX S后的问题

关于文件“Makefile”的修改时间在将来 XXX S后的问题

在Linux上系统开发项目时,一次意外的死机重启后,再次编译项目出现提示:警告:文件“Makefile”的修改时间在将来 XXX S后。

这是由于不当操作导致系统本地服务器的时间比正常时间慢,Makefile文件无法得到有效执行,可以使用: sudo find ./* -exec touch {} + 命令来同步本地的文件时间。

注意:不要将这条命令放到开机自启动中!!! 由于每次每次开机都需要手动同步时间,所以我将 sudo find ./* -exec touch {} + 命令放到 rc.local文件中,想实现开机自动同步时间的效果。但是,rc.local 中的命令是在开机工作还未完成时执行的,且 ./* 为同步当前文件下的所有文件的时间,可能是影响了系统的计时器,结果就是无限开机重启,希望大家引以为戒。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C/C++ 程序中,通常会将程序分为多个源文件,每个源文件实现不同的功能模块。当编译这些源文件时,我们需要使用 makefile 来管理这些源文件的编译和链接过程。 makefile 中需要解决的一个重要问题就是跨文件问题。在一个源文件中使用了另一个源文件中定义的函数或变量时,编译器会提示未定义的引用错误。为了解决这个问题,我们需要在 makefile 中指定编译器搜索头文件和库文件的路径,并将需要链接的目标文件或库文件添加到链接命令中。 具体来说,我们可以在 makefile 中定义变量来保存源文件、头文件和库文件的路径等信息,然后在编译和链接命令中使用这些变量。例如: ```makefile # 定义变量 SRC_DIR := src INC_DIR := include LIB_DIR := lib OBJ_DIR := obj # 指定编译器和编译选项 CC := gcc CFLAGS := -Wall -Werror -I$(INC_DIR) # 指定链接器和链接选项 LD := gcc LDFLAGS := -L$(LIB_DIR) -lmylib # 指定目标文件和依赖关系 TARGET := myapp OBJS := $(addprefix $(OBJ_DIR)/, main.o utils.o) DEPS := $(wildcard $(INC_DIR)/*.h) # 编译规则 all: $(TARGET) $(TARGET): $(OBJS) $(LD) $(LDFLAGS) $^ -o $@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(DEPS) $(CC) $(CFLAGS) -c $< -o $@ # 清理规则 clean: rm -rf $(OBJ_DIR)/*.o $(TARGET) ``` 在上面的 makefile 中,我们定义了四个变量:`SRC_DIR` 表示源文件目录,`INC_DIR` 表示头文件目录,`LIB_DIR` 表示库文件目录,`OBJ_DIR` 表示目标文件目录。我们还定义了编译器和链接器的变量,以及编译选项和链接选项的变量。 在编译规则中,我们定义了目标文件 `$(TARGET)` 和依赖关系 `$(DEPS)`,并使用 `$(addprefix)` 函数将源文件的路径和目标文件的路径拼接起来。在编译命令中,我们使用 `-I` 选项指定头文件的路径,并使用 `-c` 选项生成目标文件。 在链接规则中,我们使用 `$(LD)` 变量指定链接器,并使用 `-L` 选项指定库文件的路径,`-l` 选项指定需要链接的库文件。在链接命令中,我们使用 `$^` 变量表示所有的依赖文件,`-o` 选项指定生成的可执行文件的名称。 最后,我们还定义了一个清理规则,用于删除生成的目标文件和可执行文件。 通过使用 makefile,我们可以方便地管理多个源文件的编译和链接过程,解决跨文件问题,提高代码的可维护性和可重用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值