我的.so文件已经创建了LLVM传递。
我还有以下脚本:
INPUT=${1}
LLVM_HOME=~/Workspace
if [ $(uname -s) == "Darwin" ]; then
SHARED_LIB_EXT=dylib;
else
SHARED_LIB_EXT=so;
fi
clang -emit-llvm support/${INPUT}.c -c -o support/${INPUT}.bc && \
${LLVM_HOME}/llvm/Debug+Asserts/bin/opt -load ../../../Debug+Asserts/lib/CS201PathProfiling.${SHARED_LIB_EXT} -pathProfiling support/${INPUT}.bc -S -o support/${INPUT}.ll && \
${LLVM_HOME}/llvm/Debug+Asserts/bin/llvm-as support/${INPUT}.ll -o support/${INPUT}.bb.bc && \
${LLVM_HOME}/llvm/Debug+Asserts/bin/lli support/${INPUT}.bb.bc
因为我已经有了我的.so文件,所以我不希望脚本重新编译我的程序,因为我已经有了编译的.so文件。
任何人都可以告诉我们可以在脚本中进行哪些更改,以便它适用于我的案例。 谢谢
答案 0 :(得分:1)
注意:这个问题并不是特定于LLVM的。您正在询问如何确保一个文件比另一个文件更新(源比 .so 更新)并且只重新执行一些文件操作
Bash允许您使用-nt
之类的运算符实现此功能[请参阅this question作为示例]。
尽管如此,更好的方法是使用适当的构建系统,例如make
。