未经授权,请勿转载~
Windows Subsystem for Linux Ubuntu中使用pecl安装swool时遇到错误“error: C compiler cannot create executables”、“error: unrecognized command line option '-V'”
解决方法
先看解决方法, 将gcc版本降低到4.8即可,因为高版本gcc取消了-V参数:
sudo apt install gcc-4.8 -y
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
wget https://github.com/swoole/swoole-src/archive/v2.1.1.tar.gz
wget https://github.com/swoole/swoole-src/archive/v2.1.1.tar.gz
cd swoole-src-2.1.1/
phpize
./configure
make
make install
详细解决思路
详细解决思路如下,有兴趣的童鞋请继续看:
pecl install swool
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... cc
checking whether the C compiler works... no
configure: error: in `/home/www/swoole-src-2.1.1':
configure: error: C compiler cannot create executables
See `config.log' for more details
不知道这个config.log文件在哪里,而且发现swool的版本也是1.x而不是2.x。于是下载swool的源码,重新进行编译安装
wget https://github.com/swoole/swoole-src/archive/v2.1.1.tar.gz
cd swoole-src-2.1.1
phpize
./configure
依然报上面的错误,不过这次可以找到错误日志了
cat config.log
可以看到如下错误:
cc: error: unrecognized command line option '-V'
cc: fatal error: no input files
#省略部分代码 ...
cc: error: unrecognized command line option '-qversion'
cc: fatal error: no input files
#省略部分代码 ...
configure:2582: cc conftest.c >&5
cc: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found
#省略部分代码 ...
configure:2629: error: in `/home/www/swoole-src-2.1.1':
configure:2631: error: C compiler cannot create executables
See `config.log' for more details
#省略部分代码 ...
于是,从第一个错误开始寻找,google搜索“error: unrecognized command line option '-V'”
找了半天都没有找到解决方案(主要是英文烂),有说要安装openssl的, 有说要装pkg-config的,还有几个记不清了,都装了还是报错,几乎要放弃
终于看到一个帖子说gcc高于4.9的版本貌似取消了-V参数,迎来了曙光~
使用gcc --version
查看版本发现是5.4.0
问题找到:
wsl ubuntu的版本为16.04,apt默认安装的gcc版本为5.4.0,该版本gcc不支持-V参数
立刻搜索“apt修改软件版本”, 找到~Ubuntu安装切换多个软件版本 http://blog.csdn.net/honyniu/article/details/46370491
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
重新安装,搞定收工