2012-02-23 3 views
0

мне нужно создать Makefile, который будет компилировать мой simpleprogram.c к sp и его можно назвать как команды Unix, как ls, ps и т.д., без написания явно ./sp. Я смотрел на Интернет и не мог найти решение или искал его неправильно. Я не могу найти «исполняемый файл без ./», потому что я не знаю, что это называется => «./»Создание Makefile для кода C, работает без ./

+0

Это '' ps' или sp'? – asaelr

+0

@asaelr ps - пример из команд unix, который показывает процессы. sp - это то, что я хочу, делая simpleprgram.c усложнять sp, который можно использовать, просто набрав sp в этой папке. – Mustafa

+0

К сожалению, я неправильно понял это. :) – asaelr

ответ

6

Поместите двоичный файл в каталог, который находится в вашем PATH.

http://www.cs.purdue.edu/homes/cs348/unix_path.html

+0

Но когда я нахожусь в том же каталоге, не должен ли он работать? – Mustafa

+0

Нет, только с './Sp', если вы находитесь в том же каталоге. –

+0

Какова была цитата о тех, кто не изучил историю, обреченную на повторение своих ошибок? –

0

Вы можете просто сделать:

export PATH=$PATH:. 

Но это не очень хорошая идея, в общем.

+1

Как вы заметили, это не очень хорошая идея. В самом деле, я бы отметил, что это действительно ужасная идея. :) – Perry

1

Просто скопируйте свою программу в каталог системных bin (исполняемых двоичных файлов).

Чаще всего это /usr/bin для программ, которые могут использоваться всеми пользователями.

Если приложение предназначено только для администраторов, вы должны использовать каталог /usr/sbin/.

Не забудьте установить «исполняемый» флаг с CHMOD: chmod +x your_app

1

Правильное решение этой проблемы (если вы не хотите sp быть запущен из-за пределов Makefile), это вызвать программу с помощью полное имя пути вместо ./ (которое относительное и может меняться при создании нескольких каталогов). В вашем Makefile сделать что-то вроде:

SP_DIR := $(shell pwd)/spdir 

rule : somedependency 
    $(SP_DIR)/sp 

Где $(shell pwd) будет расширяться в каталог Makefile, которая запускается из. Если ваш каталог sp находится в родительском каталоге этого, в пути можно также использовать ..: например.

SP_DIR := $(shell pwd)/../../spdir 

Если вы хотите запустить зр из-за пределов Makefile, то вам необходимо либо копию зр в каталог, указанный в переменной PATH (сделать echo $PATH, чтобы увидеть их), или изменить свой .bashrc или эквивалент файл, чтобы сделать PATH включать каталог, который зр построен.

Джон

Смежные вопросы