linux学习杂记(四)
2012-11-9
chmod -v a+wt $LFS/sources
chmod a+wt是将目录或文件的属性设置为1777,这样任何人都可以对其进行读写。
当一个目录被设置为"粘着位"(用chmod a+t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ '/bin/bash
exec的作用是执行一个可执行文件来替换掉当前进程(注意进程号并没有改变),env -i 就是以后面的环境变量来执行 /bin/bash。经过上面的整条命令,linux将用一个全新的shell来执行接下来的命令,这样可以去除掉很多环境变量。set +h:该命令是关闭bash的 hash功能。Hash通常是一个有用的特性 —bash使用一个hash表来记录可执行文件的完整路径,以避免为寻找同一个可执行文件而反复搜索PATH里的目录。
2012-11-10
make-C ld clean : 表示先进入ld目录,然后执行ld/Makefile中的clean目标
make -C ld LIB_PATH=/tools/lib #进入ld目录进行make,同时将make的环境变量LIB_PATH设置为/tools/lib,该环境变量指定了链接器的默认搜索路径。
make bootstrap #该命令一般在编译编译器时用。这个bootstrap不只是编译GCC,而要连着编译多次,它第一次用主机的GCC进行编译,第二次用刚编译好的GCC编译,然后再用编译好的GCC编译,然后会毕较第二次和第二次的结果以确保它能正确无误的生成它自己。
sed's@^/lib/ld-linux.so.2@/tools&@g': 把/lib/ld-linux.so.2全部换成/tools/lib/ld-linux.so.2,@在这里只是一个分隔符,与常用的/一样。dirname $(gcc -print-libgcc-file-name):该命令是获取libgcc.a文件的路径名,如/usr/lib/gcc/i486-linux-gnu/4.3.3
find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm-rvf '{}' \; :该命令表示删除GCC_INCLUDEDIR目录下的所有目录文件, -maxdepth 0表示只查找GCC_INCLUDEDIR,而不查找其子目录。
grep -l "DO NOT EDIT THIS FILE"${GCC_INCLUDEDIR}/* :输出在$GCC_INCLUDEDIR目录下的文件中包含"DO NOT EDIT THIS FILE"字符串的文件名。