【问题标题】:Using library paths in makefiles在 makefile 中使用库路径
【发布时间】:2011-09-21 00:50:52
【问题描述】:

我写了一个这样的makefile:

HEADER = -I./cygdrive/c/cpros/kajj/source4
LIBB = -L./cygdrive/c/cpros/kajj/source1   -L./cygdrive/c/cpros/kajj/source2
LIBRA = -larith -ldekk

target : game.o 
    gcc $(HEADER)   $(LIBB)  $<  -o  $@  $(LIBRA)   

game.o : game.c 
    gcc -c  game.c

我已经创建了自己的静态库,并包含了头文件路径和库路径。当我执行我的makefile时,它会给出一个错误提示 /usr/lib/gcc 找不到-larith -ldekk

它指向 lib/ 目录,但它不在那里:-ldekk-larith 分别在 source1 和 source2 文件中。

如何解决这个错误?

【问题讨论】:

    标签: gcc makefile cygwin gnu-make


    【解决方案1】:

    使用-L/cygdrive/c 代替-L./cygdrive/c。点使库路径相对于当前目录,即它将查找当前文件夹的 cygdrive 子文件夹而不是驱动器 C。

    【讨论】:

    • 你太棒了 tamas 你太棒了。我的项目经理已经分配给我这些工作,我对这些 makefile 非常陌生,只有 9 天,所以我正在努力,但我无法找出错误以及您提供的解决方案过于正确,再次感谢您 tamas
    • tamas 你能告诉我在makefiles中创建一个库的方法一个静态库我想要一个名为gola.a的库,.o文件是gohh.o hola.o我想要的东西那要创建但是使用makefile如何编写代码来创建库文件你能以makefile的形式告诉我吗
    • 请在 Stack Overflow 上用不同的问题提问,有人(也许是我)会在那里回答。最好保留一个专门讨论一个特定问题的线程。
    • 如果库在完全不同的路径中会发生什么?我可以写类似 -L~/foo1/foo2/ 的东西吗?谢谢
    • 我在这里找到了一个很好的答案。他们还在生成文件中解释了 -l 和 -L stackoverflow.com/questions/519342/… 之间的区别
    【解决方案2】:

    我修改后的 Makefile 库行是:

    LIBS=-L/usr/lib/arm-linux-gnueabihf -lrtlsdr -lpthread -lm
    

    这解决了截至 2019 年 12 月 30 日运行最新 Raspbain 的 Raspberry Pi 4 中的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多