Проблема с Makefile - PullRequest
       33

Проблема с Makefile

0 голосов
/ 08 марта 2011

Я пытаюсь скомпилировать небольшую программу, написанную для класса.Они дали нам Makefile для использования, но он был создан для Linux, и у меня Mac OS.Теперь, когда я запускаю make testFills, я получаю эту ошибку:

ld: warning: directory '/lib' following -L not found
ld: library not found for -ltiff

Вот важный код фактического Makefile

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 в приведенном выше списке.Я новичок в программировании из командной строки, поэтому я не уверен, что это может значить или как я могу это исправить.Есть идеи?

Ответы [ 5 ]

1 голос
/ 08 марта 2011

Возможно, вам просто нужно указать путь к библиотеке "libtiff.a" с помощью опции -L.Например, если «libtiff.a» находится в каталоге lib в родительской папке make-файла:

-L../lib/ -ltiff 

сделает.

Для получения дополнительной информации см. Объяснение -L здесь:http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Directory-Options.html

и -l объяснение здесь http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

1 голос
/ 08 марта 2011

В 5-й строке

-lbz2 -L / lib -lrsvg-2

у вас, вероятно, нет каталога / lib, вероятно, он должен быть просто-Llib.

/ lib означает, что это корневой каталог вашего компьютера, а не папка, в которой находится make-файл.

0 голосов
/ 08 марта 2011

Согласно здесь папка общей библиотеки для MacOS находится по адресу /Library.

Поскольку ваш Makefile для Linux сказал -L / lib, я думаю, вам нужно изменить его на -L / Library, поскольку / lib - это папка общей библиотеки для Linux, а / Library для Mac OS.

0 голосов
/ 08 марта 2011

Я не думаю, что вам удастся собрать вашу программу, если у вас не установлены все эти библиотеки (т.е. все lLibrary без l), поэтому ищите их, и если они недоступны, установите их.

Также (и я надеюсь, что это не звучит слишком очевидно), если вам дали несколько библиотек для Linux (так, как видно из вашего вопроса), они должны быть созданы для Mac OS X, чтобы вы могли связать их.

Вы можете попробовать использовать /usr/lib вместо /lib.

Удачи!

0 голосов
/ 08 марта 2011

Похоже, проблема конфигурации установки вашего компилятора (gcc?).Я видел подобные ошибки в неправильных установках gcc.Пожалуйста, попробуйте, что вы действительно можете скомпилировать небольшое приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...