Создание make-файла для кода C, работающего без ./ - PullRequest
0 голосов
/ 23 февраля 2012

Мне нужно создать make-файл, который скомпилирует мой simpleprogram.c в sp, и его можно будет вызывать как команды Unix, такие как ls, ps и т. Д., Без явной записи ./sp. Я посмотрел в Интернете и не могу найти решение, или ищу его неправильно. Я не могу искать как "исполняемый файл без ./", потому что я не знаю, как это называется => "./"

Ответы [ 4 ]

6 голосов
/ 23 февраля 2012

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

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

1 голос
/ 01 марта 2012

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

SP_DIR := $(shell pwd)/spdir

rule : somedependency
    $(SP_DIR)/sp

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

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

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

John

1 голос
/ 23 февраля 2012

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

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

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

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

0 голосов
/ 23 февраля 2012

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

export PATH=$PATH:.

Но в целом это не очень хорошая идея.

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