(16.04) Установка из источника без файла конфигурации

Я должен установить какое-то подходящее программное обеспечение из источника; программное обеспечение называется XMBF (http://www.stefanmeinel.com/software/XMBF/). Поставляется с исходным кодом - это make-файл, но не файл конфигурации. В руководстве говорится, что мне, скорее всего, потребуется изменить переменную «INCPATH» в Makefile в зависимости от используемой машины; Я пробовал это, но все еще получаю ошибки, такие как этот:

/usr/include/glibmm-2.4/glibmm/ustring.h:24:26: fatal error: glibmmconfig.h: No such file or directory compilation terminated. Makefile:279: recipe for target 'main.o' failed make: *** [main.o] Error 1

, которые указывают, что .cpp не может найти заголовочный файл. Означает ли это, что я должен идти в каждый .cpp-файл и редактировать пути файла заголовка? Или есть более простой способ сделать это? Я по-настоящему новичок в этом, поэтому я бы очень признателен за любые ссылки, которые могли бы помочь мне узнать, как работают установки из источников. Или это установка из «двоичного»? Я не уверен в различии.

Спасибо!

-Jacob

0
задан 22 May 2017 в 23:32

2 ответа

Вероятно, самое легкое - позволить pkg-config выполнить эту работу для вас:

INCPATH := $(shell pkg-config --cflags libxml++-2.6 glibmm-2.4)

Вы можете сделать подобное для библиотек:

LIBS := $(shell pkg-config --libs libxml++-2.6 glibmm-2.4 sigc++-2.0 gsl)

You вероятно, обнаружит, что вам также необходимо изменить фактическое правило ссылки для исполняемой цели, так что библиотеки находятся справа от объектных файлов:

$(LINK) -o $(TARGET) $(OBJECTS) $(LFLAGS) $(LIBS)

Этого было достаточно, чтобы заставить его строить мой блок 16.10 с по умолчанию gcc-6 - на Ubuntu 16.04 с по умолчанию gcc-5.x вам может потребоваться указать компилятору возможности C ++ 11, например make "CXXFLAGS=-std=gnu++11".

0
ответ дан 18 July 2018 в 12:53

Вероятно, самое легкое - позволить pkg-config выполнить эту работу для вас:

INCPATH := $(shell pkg-config --cflags libxml++-2.6 glibmm-2.4)

Вы можете сделать подобное для библиотек:

LIBS := $(shell pkg-config --libs libxml++-2.6 glibmm-2.4 sigc++-2.0 gsl)

You вероятно, обнаружит, что вам также необходимо изменить фактическое правило ссылки для исполняемой цели, так что библиотеки находятся справа от объектных файлов:

$(LINK) -o $(TARGET) $(OBJECTS) $(LFLAGS) $(LIBS)

Этого было достаточно, чтобы заставить его строить мой блок 16.10 с по умолчанию gcc-6 - на Ubuntu 16.04 с по умолчанию gcc-5.x вам может потребоваться указать компилятору возможности C ++ 11, например make "CXXFLAGS=-std=gnu++11".

0
ответ дан 24 July 2018 в 20:03
  • 1
    Большое вам спасибо за ваш ответ! Я не знал о pkg-config. Он начал строить, пока я не попал в кучу ошибок и неопределенной ссылкой на glib :: ustring :: ustring () & quot; и такого рода. Я не совсем понял, что вы подразумеваете под «Изменить действующее правило ссылки для исполняемой цели», что вы имеете в виду? Недавно я немного узнал о make-файлах, поэтому прошу прощения, если это тривиальный вопрос. – Jacob Hempel 23 May 2017 в 02:49
  • 2
    Я просто хочу найти строку Makefile, которая выглядит как $(LINK) $(LFLAGS) $(LIBS) -o $(TARGET) $(OBJECTS) и изменить ее, как $(LINK) -o $(TARGET) $(OBJECTS) $(LFLAGS) $(LIBS) - понять, почему, см. [D0] Почему порядок «-l» в gcc имеет значение? – steeldriver 23 May 2017 в 02:52

Другие вопросы по тегам:

Похожие вопросы: