Makefile的问题

Makefile的问题,makefile,terminal,Makefile,Terminal,我正试图编译一个我为课堂编写的小程序。他们给了我们一个Makefile供我们使用,但它是用Linux创建的,我有Mac OS。现在,当我运行make testFills时,会出现以下错误: ld: warning: directory '/lib' following -L not found ld: library not found for -ltiff 下面是实际生成文件的重要代码 EXENAME=testFills OBJS=testFills.o animation.o EasyBM

我正试图编译一个我为课堂编写的小程序。他们给了我们一个Makefile供我们使用,但它是用Linux创建的,我有Mac OS。现在,当我运行make testFills时,会出现以下错误:

ld: warning: directory '/lib' following -L not found
ld: library not found for -ltiff
下面是实际生成文件的重要代码

EXENAME=testFills
OBJS=testFills.o animation.o EasyBMP.o solidColorPicker.o gridColorPicker.o gradientColorPicker.o rainbowColorPicker.o
BMPDIR=../mp4_lib/include/EasyBMP
IMGMAGICKCONFIG=-I../mp4_lib/include/ImageMagick -g -O2 -Wall -W -pthread
IMGMAGICKLINKOPTS=-L../mp4_lib/lib -lMagick++ -lMagickWand -lMagickCore -ltiff -lfreetype -ljpeg -lpng -lfontconfig -lXext -lXt -lSM -lICE -lX11 -lbz2 -L/lib -lrsvg-2 -lgdk_pixbuf-2.0 -lm  -ldl -lxml2 -lz -lm -lgomp -lpthread
我的父目录中有这个mp4_lib文件夹,所以我不知道为什么它说找不到它。实际上,它在上面的列表中找不到任何过去的-ltiff。我不熟悉命令行编程,所以我不确定这意味着什么,也不知道如何修复它。有什么想法吗?

在第五行

-lbz2-L/lib-lrsvg-2

您可能没有一个/lib目录,它应该只是-Llib


/lib表示它是计算机的根目录,而不是makefile所在的文件夹。

似乎是编译器(gcc?)安装的配置问题。我在gcc的错误安装中也看到过类似的错误。请尝试编译一个小应用程序。

您可能只需要使用-L选项指示库“libtiff.a”路径。 例如,如果“libtiff.a”位于makefile父文件夹的lib目录中:

-L../lib/ -ltiff 

有关详细信息,请参阅 -L在此解释:

及 -我在这里解释一下
如果没有安装所有这些库(即没有
l
的所有
lLibrary
),我认为您无法构建程序,因此请查找它们,如果它们不可用,请安装它们

另外(我希望听起来不太明显),如果你得到了一些Linux库(从你的问题看来是这样),它们必须是为MacOSX构建的,以便你链接它们

您可以尝试使用
/usr/lib
而不是
/lib。

祝你好运

根据,MacOS的共享库文件夹位于/library


由于您的Linux Makefile显示为-L/lib,我认为您需要将其更改为-L/Library,因为/lib是Linux的共享库文件夹,就像/Library是Mac OS的共享库文件夹一样。

或者,您可能没有安装tiff,但可以使用macports安装它。然后你需要-L/opt/local/lib和-I/opt/local/includewhat如果你删除了-L/lib,会发生什么,因为我的mac上肯定没有/lib,而且至少错误应该会改变?我已经使用端口安装了ImageMagick。makefile现在会是什么样子来反映ImageMagick的新路径?所有安装的端口通常位于-L/opt/local/lib(用于编译位)和-I/opt/local/include(用于标头)中。macports是否也将tiff作为ImageMagick的依赖项安装?ltiff错误是在-L目录中找不到文件libtiff.so(或.o,我不记得了),这表明它没有安装,而其他的都安装了?如果我想自己指定路径,例如/users/admin/mp4_lib/lib,我会删除该文件吗?不确定这是为了什么-L告诉编译器在哪里查找编译库(对象文件)以链接到当前正在编译的程序。(ld是链接器的名称,因此程序很可能编译得很好,不过需要查看整个makefile才能进行检查)