2017-02-19 4 views
1

Я хочу, чтобы запустить свою программу с исполняемым файлом без «./»Как запустить исполняемый файл без «./» с помощью MakeFile?

Например позволяет сказать, что у меня есть Makefile:

all: RUN 

RUN: main.o 

     gcc -0 RUN main.o 

main.o: main.c 

     gcc -c main.c 

Так что для того, чтобы запустить программу, как правило, я бы сказал, в терминал «make» затем поместите «./RUN» для вызова программы.

Но я бы просто хотел сказать в терминале «make», а затем «RUN», чтобы вызвать программу.

Итак, в заключение я хотел бы просто сказать> RUN вместо> ./ RUN внутри терминала. Есть ли какая-нибудь команда, которую я могу использовать, чтобы сделать это внутри Makefile?

Когда я просто положил «RUN» в терминал, он просто говорит, что команда не найдена.

+0

Что произойдет, если вы наберете 'RUN' вместо'./RUN'? То есть я не понимаю, в чем проблема. – wallyk

+0

[Почему мне нужно ввести '. /' Перед выполнением программы в текущем каталоге?] (Http://askubuntu.com/questions/320632/why-do-i-need-to-type-before-executing -a-program-in-the-current-directory) – user657267

+0

Он говорит, что RUN: команда не найдена – Sarah

ответ

2

Это вопрос $PATH, который импортируется make с вашего environment.

Вы можете установить его в Makefile, возможно, с

export PATH=$(PATH):. 

или

export PATH:=$(shell echo $$PATH:.) 

но я не рекомендую делать это (это может быть дыра в безопасности).

я рекомендую, наоборот, используя явно./RUN в вашем Makefile, что намного более читаемые и менее подверженные ошибкам (что произойдет, если вы получили RUN программы где-то еще в вашем PATH?).

Кстати, вы будете лучше прочитать more о make, запустить один раз make -p понять правила предопределённых известных make и имеете

CC= gcc 
CFLAGS+= -Wall -g 

(потому что вы действительно хотите, чтобы все предупреждения & отладочной информация)

и просто

main.o: main.c 

(без рецептов в этом правиле) в вашем изменении Makefile

+1

Я надеюсь, что 'export PATH = $ (PATH) :.' находится около вершины списка DO-NOT-DO каждого. Это действительно дыра в безопасности. Не уверен, что самая тревожная вещь - это сообщение, предлагающее сделать это (даже с предупреждением, которое может появиться слишком поздно для внимания некоторых пользователей SO) или upvotes (возможно, от пользователей SO с интервалом внимания менее 6 строк) , –

+0

@ComeRaczy: OP просит иметь '.' в своем' PATH'. Да, это плохая идея и дыра в безопасности, но он спрашивает об этом! –

+0

OP фактически спросил, как запустить программу с исполняемым файлом без «./». Есть более безопасные способы достижения этого, чем добавление «.». на путь. Одним из примеров может быть псевдоним. Общий псевдоним типа 'alias RUN =./RUN' будет более безопасным, чем '.' на пути. Атрибут, специфичный для пути, например 'alias RUN = ', если [$ PWD =/path/to -a -e/path/to/RUN]; затем/путь/в/RUN; иначе RUN; fi'' будет иметь дополнительное преимущество, ограничивая поведение только одним конкретным каталогом и одной конкретной программой, когда она существует, в противном случае сохраняя поведение по умолчанию. –

0

ваш Makefile в

all: RUN 

    RUN: main.o 

     gcc -o RUN main.o && ./RUN 

    main.o: main.c 

     gcc -c main.c 

просто положить ./filename в вашем Makefile

+0

Хммм ... OP утверждает, что они не хотят использовать '. ./" , – jww

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