文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>GCC应用(二): 让命令行输出的警告信息显示绝对路径名

GCC应用(二): 让命令行输出的警告信息显示绝对路径名

时间:2010-06-09  来源:slimzhao

gcc选项之多, 我已知这个世界上只有另几个程序可以与之相提并论: pc-lint, imagemagick 命令行工具.

但是, 如果你想让它输出的警告信息中使用绝对路径名, 而不是仅仅文件名部分, 却发现它竟没有这么一个选项. 一番搜罗之后, 只看到一个mail list中有人提出相同需求, 自问自答看来gcc没有这个选项, 在info gcc中, 也没找到full path, absolute path之类相符的选项.

假设它的确没有吧. 我还是会需要这一功能. 原因很简单: 我在查看所有的make.log时希望在vim中直接用<C-W>f即可打开文件, 稍加调校, 最好还能定位到出错的那一行, 如果只有文件名部分, 可就麻烦了, 一则, 文件名, 可能位于某个子目录, 更麻烦的情况, 我在项目中偏偏就碰到了, 不同子目录下使用同样的文件名, 项目一大, 这种做法很让人烦.

先观察现有的make过程, 用的是哪个命令行, 一般来说, 一个make过程, 只会使用统一的一个编译器程序名, 如cc或gcc

which cc
在我的RedHat Linux上, 它位于/usr/bin 下.

查看$PATH, 一般来说/bin 列在/usr/bin之前,
hash -r
让bash 忘掉它曾在/usr/bin下成功找到过cc这回事, 下次使用时从头找.

cat > /bin/cc <<END
#!/bin/bash

ARGS=
for i in "$@"; do
   if [[ "$i" =~ '^[a-zA-Z0-9_-]+\.c$' ]]; then
      ARGS="$ARGS $(cd $(dirname $i);pwd)/$(basename $i)"
   else
      ARGS="$ARGS $i"
   fi
done
exec /usr/bin/cc $ARGS
END


chmod a+x /bin/cc

再执行make即可

要点在于, 把每个实际进行编译的命令中含有的.c文件名部分, 用它的绝对路径替换, gcc在输出警告/错误信息时, 使用命令行上"看到"的文件名, 手工把绝对路径给它, 它自然就原样输出.


相关阅读 更多 +
排行榜 更多 +
mirrox模组(玩家自制)手机版下载

mirrox模组(玩家自制)手机版下载

休闲益智 下载
集装箱模拟器手机版下载安装

集装箱模拟器手机版下载安装

模拟经营 下载
哔咔漫画app下载免费2025

哔咔漫画app下载免费2025

浏览阅读 下载