LFS<0603-2>

gcc pass-1

for file in \

$(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)   /*  在gcc/config目录下寻找linux64.h/linux.h/sysv4.h头文件, -o 是或的意思 */
do
cp -uv $file{,.orig}    /* 复制找到的文件并命名为 $.orig.  比如linux.h--> linux.h.orig.  -u参数表明只有源文件比目的文件新或者目的文件不存在才会复制, 这样就避免了二次替换,比如替换为/tools/tools/lib/32 */                                                                            
sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \     /*  s@pattern@replacement@g,  这里s为替换的意思(substitute), @为分隔符, 和/分隔符一样, 貌似用其他的特殊字符充当分隔符也可以(确保分隔符是同一个字符), /lib\(64\)\?\(32\)\?/ld是一个正则表达式, \符号为转义字符, /ib/(64)?(32)?/ld.  ()为创建一个用于匹配的子串, ?为匹配之前的项0次或者1次, 所以该表达式要匹配的字符串为/lib64/ld, /lib6432/ld, /lib32/ld,  /tools&为替换部分,&表示在匹配的字符串加前缀还是后缀(这里就不是替换的意思了),如果替换的字符串在&字符之前,就表示加前缀, 之后则为加后缀 最后的g标志表示应用于找到的所有行*/
-e 's@/usr@/tools@g' $file.orig > $file  /* 将/usr替换为/tools, 然后保存到linux.h等源文件, 这里其实也可以加-i参数表示直接修改文件并保存, 就不需要重定向这一步了 */
echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"   /* 调整gcc函数库的搜索路径? */
#define STANDARD_STARTFILE_PREFIX_2 "" ' >> $file
touch $file.orig   /* 更新linux.h.orig的时间戳,防止二次执行该脚本*/
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值