2016-07-23 10 views
0

function.h, function.c 및 my_program.c가있는 경우 function.h에서 같은 디렉토리에있는 모든 메소드를 호출하면 가장 좋은 작성 방법은 무엇입니까? 메이크 파일 그래서 결국 lli my_program.bc 입력 할 때 실행되는 my_program.bc 결국? (함수에 물건을 삽입하는 사용자 정의 패스를 실행해야합니다. function.bc 및 test.bc에 대한 패스를 실행해야합니까? 아니면 패스를 실행하기 전에 링크해야합니까?)llvm 용 메이크 파일을 작성하는 방법 IR

나는 llvm을 시도했습니다. - 행운과 함께 function.bc my_program.bc를 연결하십시오. 나는 단순한 무언가를 놓치고 있거나 모든 것을 잘못 생각하고 있다고 느낍니다.

현재 끔찍한 없음 가공 메이크 :

.PHONY: all clean 
CC = clang 
CFLAGS = -std=gnu99 -D_POSIX_C_SOURCE=200809L -g -Wall 
IRFLAGS = -O3 -emit-llvm 
TARGET = test 
DEPS = functions.h 
all: $(TARGET) 
bc: test2 

%.o: %.c $(DEPS) 
    $(CC) -c -o [email protected] $< $(CFLAGS) 

%.bc: %.c $(DEPS) 
    $(CC) $(IRFLAGS) -c -o [email protected] $< 

test2: test.bc functions.bc 
    llvm-link -o test2.bc $< functions.bc 


test: test.o functions.o 
    $(CC) $(CFLAGS) -o [email protected] $^ 


clean: 
    $(RM) $(TARGET) *.o *.bc 
+0

실제로 질문에 답변하지는 않지만 직접 패스를 실행 해 보았습니까? –

+0

예, 패스가 작동하고 실행되며 테스트 실행 파일도 작동합니다. 내 문제는 원래 프로그램을 링크하여 bc 형식으로 실행하는 것입니다. – Ellyl

답변

0

가 왜 그냥 원하는 실행 파일을 생성하는 일반 Makefile을 작성 는 wllvm을 사용할 수 있습니까? wllvm에 대한

뻔뻔 플러그 :

https://github.com/SRI-CSL/whole-program-llvm

나는 LLI를 사용하지 않는, 그래서 나는이 프로그램이있을 수 있습니다 stdlibc에 어떤 의존도를 해결하는 방법에 대해 듣고 관심을 가질 것입니다.