Мне сложно понять, как создать две жесткие ссылки на мою целевую программу. Моя целевая программа foo
, и я хочу создать два hardlinks для foo, один из которых называется baz
, а другой - bar
. В настоящее время мой Makefile выглядит следующим образом:Жесткая ссылка в файле makefile
CC = gcc
CFLAGS = -g -std=c99 -pedantic -Wall
HOME = /my/home/dir
SOURCES = main.c bar.c baz.c datastructure.c ${HOME}/addNodes.c
OBJECTS = $(SOURCES:.c=.o)
TARGET = foo
LN_F = ln -f
$(TARGET): $(OBJECTS)
${CC} ${CFLAGS} -o [email protected] $^
%.o : %.c
$(CC) $(CFLAGS) -c $< -o [email protected]
bar: ${TARGET}
${LN_F} ${TARGET} bar
baz: ${TARGET}
${LN_F} ${TARGET} baz
Проблема заключается в том, что я теперь должен создавать жесткие ссылки на Foo вручную, введя "ln -s foo bar"
и "ln -s foo baz"
minor point: ln -s - это символическая ссылка, а не жесткая ссылка. Вы, вероятно, не хотите жестких ссылок. Вы пытались просто добавить строку 'ln -s $ (TARGET)' после строки '$ {CC}' ...? –
@GregBowser О, хорошо, я не понимал - это была символическая ссылка. Но я определенно хочу жесткую ссылку, потому что я хочу, чтобы bar и baz представляли ту же программу, что и foo, но просто имели разные имена. – Apollo
Символическая ссылка сделает это. например, в моей системе: '/ bin/sh' является символической ссылкой на'/bin/bash', что в основном является тем, что вы хотите сделать. Символические ссылки - это путь в 99% случаев. Во всяком случае, просто добавление строки 'ln -s ...' в '' (TARGET) 'target должно сделать трюк. –