灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:1819回复:0

Ubuntu Shell引发编译问题

楼主#
更多 发布于:2013-08-26 13:56
在Ubuntu13.04下编译Realtek提供的Linux source包时发生
 
 
 
[plain]
 
make_release: 344: make_release: Syntax error: "do" unexpected (expecting "fi")  
 
mv: 无法获取"drivers/net/wireless/realtek/pci/rtl8192ce/../../combo/rtl8192c_8192d/rtl8192_8188CE_linux_drv/" 的文件状态(stat): 没有那个文件或目录  
 
改到Fedora16下就顺利编译通过。
 
 
 
参考网上资料,发现是 Ubuntu 默认Shell的问题。Unbuntu默认 sh --> /bin/dash,与Fedora标准采用bash不一致。
 
 
 
echo $SHELL                                     返回 /bin/bash
 
ls /bin/sh                                              返回指向/bin/dash
 
make 时,虽然makefile中已经有 #! /bin/bash,但实际上调用的还是sh。(该makefile是次级目录中的)
 
bash - GNU Bourne-Again SHell
 
dash - Debian Almquist Shell
 
 
 
解决方式:
 
网上提到无效的文件限定的解决方式:
 
文件首行采用      #! /bin/bash            实际上行不通
 
文件首行采用      SHELL=/bin/bash        未测试,但应该不行。 echo $SHELL 已经指向bash
 
 
 
网上资料中提供了最终解决方式:
 
[plain]
 
sudo dpkg-reconfigure dash  
 
 
 
在出现的菜单中选择 NO  (不使用dash)

喜欢0 评分0
游客

返回顶部