#!/bin/bash # 设置输入和输出目录 input_dir="sy" output_dir="build" lib_dir="lib" rm -rf build # 确保输出目录存在 mkdir -p "$output_dir" rm ./lib/sylib.o clang -fPIC -c ./lib/sylib.c -o ./lib/sylib.o # gcc -c ./lib/sylib.c -o ./lib/sylib.o rm ./lib/libsylib.so clang -shared ./lib/sylib.o -o ./lib/libsylib.so # ar rcs ./lib/libsy.a ./lib/sylib.o # 遍历sy目录下的所有文件 for file in "$input_dir"/*.c; do # 检查文件是否存在 if [ -f "$file" ]; then # 获取文件名(不含路径) filename=$(basename -- "$file") # 移除文件扩展名,假设输出的可执行文件不需要扩展名 basename="${filename%.*}" # 编译文件,链接库libsysy.a,设置头文件路径为lib/sylib.h clang "$file" -I "$lib_dir" -L"$lib_dir" -lsylib -o "$output_dir/$basename" fi done