在 makefile 中使用库路径
我写了一个像这样的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 文件中。
如何解决这个错误?
I have written a makefile like this:
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) lt; -o $@ $(LIBRA)
game.o : game.c
gcc -c game.c
I have created my own static library and included the header file path and library path. When I execute my makefile it gives an error saying that/usr/lib/gcc
cannot find -larith -ldekk
.
It is pointing to the lib/ directory but it is not over there: -ldekk
and -larith
are in source1 and source2 files respectively.
How to solve this error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
-L/cygdrive/c
,而不是-L./cygdrive/c
。点使库路径相对于当前目录,即它将查找当前文件夹的 cygdrive 子文件夹而不是驱动器 C。Instead of
-L./cygdrive/c
, use-L/cygdrive/c
. The dot makes the library path relative from the current directory, i.e. it will look for acygdrive
subfolder of the current folder instead of drive C.我修改后的 Makefile 库行是:
这解决了截至 2019 年 12 月 30 日运行最新 Raspbain 的 Raspberry Pi 4 中的问题
My revised Makefile libraries line is:
This solved the issue in a Raspberry Pi 4 running the latest Raspbain as of Dec 30, 2019