2016-06-10 4 views
-1

Я создал приложение на своей Windows-машине, и теперь я хочу установить его на свою Linux-машину. Он имеет несколько заголовков и исходных файлов, поэтому я подумал, что лучше всего загрузить его на Github. Я сделал это, и я также создал Makefile, но я получаю много ошибок, когда пытаюсь установить его прямо из папки.Как установить собственное приложение на Ubuntu

Учитывая, что он предназначен только для личного использования, есть способ вручную скомпилировать каждый файл, а затем запустить его в целом?

Makefile:

.PHONY: all debug profile install uninstall clean 

all: $(PROG) 

$(PROG): $(FILES) 
    $(CC) $(CCFLAGS) -o $(PROG) $(FILES) $(LIBS) 

debug: $(FILES) 
    $(CC) $(DEBUGFLAGS) -o $(PROG) $(FILES) $(LIBS) 

profile: $(FILES) 
    $(CC) $(CCFLAGS) -pg -o $(PROG) $(FILES) $(LIBS) 

install: $(PROG) 
    cp -f $(PROG) /usr/sbin/ 
    cp -f $(PROG).1 /usr/man/man1/ || cp -f $(PROG).1 /usr/local/man/man1/ 

uninstall: 
    rm -f /usr/sbin/$(PROG) 
    rm -f /usr/man/man1/$(PROG).1 || rm -f /usr/local/man/man1/$(PROG).1 

clean: 
    rm -f $(PROG) 
+1

GitHub не имеет ничего общего с установкой, это всего лишь место для хранения кода. Не могли бы вы дать [mcve] кода и makefile, а также расширить * «много ошибок» *? – jonrsharpe

+0

Проблема с файлом make здесь: 'cp -f $ (PROG)/usr/sbin/cp -f $ (PROG) .1/usr/man/man1/|| cp -f $ (PROG) .1/usr/local/man/man1/', в то время как ошибка« нет такого файла или каталога ». Я попытался решить это сам, но я потерпел неудачу. Кроме того, я не представил проверенного примера кода, потому что я попросил альтернативу не для проверки кода. Если, однако, код является обязательным, я добавлю его. – EdTed

+0

@jonrsharpe Я добавил часть файла makefile. Надеюсь, это поможет. – EdTed

ответ

0

Хотя ваш основной подход хорошо, вам не хватает пару деталей, и вы нарушаете несколько конвенций, которые были установлены по причине.

Детали:

  • Ваши определения для $(PROG), $(FILES) и $(LIBS) не включены.
  • Вы пытаетесь скопировать файл в каталог, не гарантируя его существования. Утилита install часто используется вместо cp для обработки таких вещей.

конвенции:

  • Вы, кажется, не только использовать root привилегии при необходимости. Компилировать как обычного пользователя; только запустите make install как root, например. с использованием sudo; или лучше, избегайте этого.
  • Вы пытаетесь поместить файлы в /usr/bin/ и /usr/man, где система управления пакетами устанавливает файлы, поэтому вы рискуете запутать ее. Не. Если вам не нужно делать стороннее программное обеспечение, такое как ваше собственное, доступное всем пользователям в системе, просто установите на /usr/local/ или /opt, которые существуют для этой цели. Отрегулируйте $PATH и $MANPATH соответственно. Если это просто для вашего личного использования, вы можете установить его в директории под $HOME.
  • Создайте целевой каталог верхнего уровня для установки в переменную в Makefile. Его часто называют $(DESTDIR).