【发布时间】:2013-12-07 07:10:26
【问题描述】:
我有一个 shell 脚本,我首先读取指定文件夹中的所有 .s 文件,然后使用循环将它们编译为目标文件,然后将它们链接到可执行文件。 这个:
FILES=PTscalar_1.0/mibenchforpt/security/sha/*.s
for sfile in $FILES
do
echo "------------------------------------------------"
echo $sfile
objectFile="${sfile%.s}.o"
exefile="${objectFile%.o}.ex"
simplescalar/bin/sslittle-na-sstrix-as -o $objectFile $sfile
done
但我有一个问题:在 sha mibench 程序中,我们有 2 个文件,每个文件都在这个流程中:
.c -> .s -> .o
但在最后阶段,应将两个 .o 文件链接到一个可执行文件中。
如何同时获取两个文件名并创建一个命令来链接它们。
主要代码是这样的:
simplescalar/bin/sslittle-na-sstrix-ld -o __sha.ex _sha.o _sha_driver.o
有没有办法像这样查看文件的内部:
OFILES=PTscalar_1.0/mibenchforpt/security/sha/*.o
simplescalar/bin/sslittle-na-sstrix-ld -o $exefile OFILES[0] OFILES[1]
然后在循环中对具有此模式的所有文件执行此操作
第一个文件就像*.o 或*_main.o
第二个是:*_driver.o
谢谢
【问题讨论】:
-
你怎么不使用makefile呢?
-
"shell" 太通用了——并不是所有的 shell 都支持数组。如果需要数组支持,则需要使用具有正确扩展名的特定 shell,例如 bash。
-
在 shell 中使用大写变量名对于既不是 (1) 环境变量,也不是 (2) 有意引用 shell 内置函数的事物来说是不好的做法。在您的 shell 实例本地的每个变量中至少使用一个小写字符可以防止命名空间冲突,否则被认为是一种好的做法。