【问题标题】:Fatal Error when executing a Makefile执行 Makefile 时出现致命错误
【发布时间】:2016-04-15 07:16:15
【问题描述】:

我目前正在处理一项要求我构建一个 Makefile 的任务

  • 创建一个包含目录
  • 将 math330.h 文件复制到包含目录中
  • 创建一个lib目录
  • 将 trig 和 exp 中的 .c 文件编译为目标文件
  • 制作图书馆
  • 将库安装到lib目录
  • 针对包含和库目录编译 cli 程序

因此,我为此编写了大部分代码,但是当我尝试将 trig 函数的 .o 放入包含文件夹时,我不断收到错误消息。错误是

trig/cos330.c:1:10: fatal error: 'math330.h' file not found

这只是我需要帮助的最后一部分!有人可以给我一些关于我能做什么的提示吗?谢谢!

all:
    mkdir -p ./include
    mkdir -p ./lib
    cp math330.h ./include
    gcc -l ./include/ -c trig/*.c
    gcc -l ./include/ -c exp/*.c
    mv *.o ./lib/
    ar r libmath.a lib/*
    mv libmath.a lib/
    gcc -l ./include/ cli/cli.c -L ./lib -lmath -lm

clean:
    rm -rf include
    rm -rf lib
    rm a.out

【问题讨论】:

  • -l 选项看起来不对。你想要-I 和/或-L
  • 这绝对不是创建makefile 的好方法。请阅读一些关于编写 makefile 的介绍,或者在这里找到关于 SO 的问题——有很多可供选择的 .并且请不要在得到答案后立即删除问题;这不是长期受欢迎的秘诀。

标签: unix makefile object-files


【解决方案1】:

指定包含目录的选项是大写-I (I),而不是小写 L (l)。

gcc -I ./include …

小写的 ell 表示库名称。给定-l ./include,可怜的链接器将有一个精神分裂的时间来寻找一个库lib./include.alib./include.so 来链接(可能在./lib 目录中),它可能找不到它。但它并没有那么远。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多