Gcc 在makefiles中使用库路径

Gcc 在makefiles中使用库路径,gcc,makefile,cygwin,gnu-make,Gcc,Makefile,Cygwin,Gnu Make,我编写了一个如下的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

我编写了一个如下的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
HEADER=-I./cygdrive/c/cpros/kajj/source4
LIBB=-L./cygdrive/c/cpros/kajj/source1-L./cygdrive/c/cpros/kajj/source2
天秤座=-larith-ldekk
目标:游戏
gcc$(页眉)$(LIBB)$<-o$@$(LIBRA)
游戏o:游戏c
gcc-c游戏
我已经创建了自己的静态库,包括头文件路径和库路径。当我执行makefile时,它会给出一个错误
/usr/lib/gcc
找不到
-larith-ldekk

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


如何解决此错误?

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

我修订的Makefile libraries行是:

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

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

你的精彩tamas你的精彩绝伦。我的项目经理分配给我这些工作,我对这些makefiles非常陌生,只有9天,所以我正在工作,但我无法找出错误和你给出的解决方案,它太好了。再次感谢你Tamastas你能告诉我如何创建一个库一个静态库吗makefiles我想要一个名为gola.a的库,.o文件是gohh.o hola.o类似的东西,我想要创建它,但是使用makefile如何编写代码来创建库文件你能以makefile的形式告诉我吗请用另一个关于堆栈溢出的问题问它,有人(可能是我)会在那里回答。最好将一个线程专用于一个特定的问题。如果库位于完全不同的路径,会发生什么?我可以写一些像-L~/foo1/foo2/thanki这样的东西吗?我在这里找到了一个很好的答案。它们还解释了-l和-l在makefile中的区别