플러그인을 사용하기 위해 program을 변환하려고하는데 Makefile에 문제가 있습니다. Makefile이 디렉토리 플러그인을보고, 두 개의 다른 확장자 인 .so와 .o를 사용하여 거기에있는 모든 .c 파일을 컴파일하고, 별도의 폴더에 설치하는 것이 바람직합니다. 기본적으로 다음과 같습니다.여러 .c 파일에서 여러 .so 및 .o 파일 생성
gcc -shared -lc -o testPugin.so testPugin.o
gcc -c -fpic testPugin.c
gcc Cprogram.c -ldl
그러나 불명확 한 .c 파일의 경우.
지금까지 플러그인 디렉토리를 살펴본 결과 모든 파일을 찾을 수 있었지만 위의 두 번째 단계에 따라 파일을 컴파일하고 .so 및 .o 파일을 출력합니다. 여기에 지금까지 무엇을 가지고 :
TOP := $(dir $(lastword $(CURDIR)))
PLUGDIR = $(TOP)src/plugins
PLUGSRC = $(PLUGDIR)/*.c
OBJ = $(PLUGSRC:.c=.o)
SRCS = Cprogram.c
CFLAGS = -shared -lc
BINARY = testProg
$(BINARY): $(SRCS)
echo $(OBJ)
하지만 그건 단지 출력 :
⇒ make
echo /Users/fragmachine/eclipse-workspace/Cprogram/src/plugins/*.o
/Users/fragmachine/eclipse-workspace/Cprogram/src/plugins/*.o
내가 얻을 OBJ = $(PLUGSRC:.c=.o)
OBJ = $(SRCS:.c=.o)
에 변경하는 경우 :
⇒ make
echo Cprogram.o
Cprogram.o
내가 원하는 종류의 어느 하지만 하나의 파일에만 해당됩니다. 나는 일종의 와일드 카드 문자가 빠져 있어야만한다고 생각하지만 행운과 함께 %와 *를 사용해 보았습니다.
$(BINARY): $(SRCS)
gcc -shared -lc $(All plugin.c files) -o $(OBJ) #Output .o files for each plugin.c file
gcc -shared -lc $(All plugin.c files) -o $(OBJ2) #Output .so files for each plugin.c file
gcc -c -fpic $(All plugin.c files) # I'm not 100% sure what this does
gcc Cprogram.c -ldl # Compile the main program
나는 전혀 make
에 많은 경험이없는 : 내가 뭘하려는거야 분명하지 않다 경우
는 여기에 몇 가지 이상한 메이크업 의사 코드입니다. 전에는 정말 간단한 것들만 만들었습니다. 그래서 어떤 도움이 크게 감사 할 것입니다.
PLUGDIR = src/plugins
PLUGSRC = $(PLUGDIR)/*.c
SRCS = $(wildcard $(PLUGSRC))
OBJ = $(SRCS:.c=.o)
SOBJ = $(SRCS:.c=.so)
CFLAGS = -shared -lc
BINARY = testProg
all: $(BINARY)
@echo "make is fun!"
$(BINARY): $(OBJ) $(SOBJ)
@echo "build the binary [email protected] which depends on $^"
%.o: $(SRCS)
@echo [email protected]
%.so: $(SRCS)
@echo [email protected]
먼저, 이것은 SRC/플러그인 디렉토리에있는 모든 * .c 인 이름을 수집하기 위해 $ (와일드 카드) 함수를 사용하여 여기에
고맙습니다. 나는 하루 종일 놀고 있었고 성공을 거두지 못했습니다. 나는 적어도 뭔가를 만들 수 있도록 bash 스크립트를 작성하기 시작했다 ... 나는 여기서 그것을 알아낼 수 있어야한다. 다시 한번 감사드립니다 :) – facetoe