2016-07-23 6 views
0

3つのファイル、function.h、function.c、my_program.cがあり、function.hの中のメソッドを同じディレクトリにすべて呼び出す場合は、どのような方法で書き込むのが最適でしょうか私がlli my_program.bcを入力すると実際に実行されるmy_program.bcで終わるようにmakefileを作成しますか? (function.bcとtest.bcのパスを実行する必要がありますか、パスを実行する前にリンクする必要がありますか?)llvm用のメイクファイルの書き方IR

私はllvmを試しました-link 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

理由だけ が、その後wllvmを使用し、必要な実行可能ファイルを生成するために、通常のMakefileを書きませんか? wllvmため

恥知らずなプラグ:

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

は私がLLIを使用していないので、私はそれはあなたのプログラムが持っているかもしれstdlibc上 任意の依存を解消する方法を聞いて興味があると思います。

関連する問題