g++: as 无法确定要使用哪个汇编器 运行
g++: as fails to determine which assembler to run
今天我想重新编译我的一个项目。编译这个项目已经在我的机器上运行了,但是这次出现了错误。
编译器输出为:
fatal error: as: unknown host architecture (can't determine which assembler to run)`
对于行:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../../.vscode -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I../../.vscode -I. -o Main.o ../../Main.cpp
我尝试编译其他一些项目,但意识到我无法使用任何 c++ 编译器编译任何东西,所以我查了一下。
我找到的唯一合适的线程是 this one,但解决方案 'reinstalling binutils' 对我不起作用(尝试了 sudo apt-get install --reinstall binutils
以及 --reinstall gcc
、g++
和 build-essential
)
我想到这个问题的一个可能原因是我昨天安装的 iOS-toolchain - 我不得不安装一些不同的 clang 版本 - 但实际上我没有改变系统汇编器上的任何东西...
如果有人有想法;任何帮助将不胜感激:)
附加信息:
Ubuntu 16.04 LTS 64 位
AMD FX(tm)-6300 六核处理器 × 6
uname -m
returns x86_64
gcc -march=native -v -E - 2>&1 <<<'' | grep "cc1" | egrep -o -e $'-m(arch|tune)=[^ "\']+'
returns -march=bdver2
和 -mtune=bdver2
已经尝试 gcc [...] -march
bdver2
和其他架构
g++ -v -c HelloWorld.cpp
给我:http://pastebin.com/Ks2be0hL
type -a as
说:
as is /usr/local/bin/as
as is /usr/bin/as
as --version
可悲的是再次向我展示错误,但 info as
告诉我它是 binutils-2.26.1-system
来自 2016-08-07
dpkg -S /usr/bin/as
打印:binutils: /usr/bin/as
删除 binutils
并按照以下步骤重新安装:
创建一个安装目录/opt/cross
,并确保您有对.
的写权限
sudo mkdir -p /opt/cross
sudo chown user /opt/cross
export PATH=/opt/cross/bin:$PATH
下载并安装
wget http://mirrors.muzzy.it/gnu/binutils/binutils-2.9.tar.gz
tar xvf binutils-2.9.tar.gz
cd binutils-2.9
linux32 ./configure --prefix=/opt/cross --target=aarch64-linux --disable-multilib
如果不起作用删除 --target=aarch64-linux
,--disable-multilib
选项意味着我们只希望我们的 Binutils 安装与使用 aarch64 指令集的程序和库一起工作,而不是任何相关指令集比如 aarch32, 运行:
linux32 ./configure --prefix=/opt/cross --disable-multilib
linux32 make
linux32 make install
type -a as
表示 as
是 /usr/local/bin/as
。这就是 gcc 运行,而不是 /usr/bin/as
,因为 /usr/local/bin/as
在您的 $PATH
搜索顺序中首先找到。这就是为什么重新安装软件包等无效的原因:您安装的其他东西(可能是手动安装的)安装了非标准 as
.
看看 /usr/local/bin/as
并弄清楚它来自哪里,以及如何处理它。现在您可以将其重命名为 as.unknown
或其他名称,然后一切都将使用正常的系统汇编器 (/usr/bin/as
).
今天我想重新编译我的一个项目。编译这个项目已经在我的机器上运行了,但是这次出现了错误。
编译器输出为:
fatal error: as: unknown host architecture (can't determine which assembler to run)`
对于行:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../../.vscode -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I../../.vscode -I. -o Main.o ../../Main.cpp
我尝试编译其他一些项目,但意识到我无法使用任何 c++ 编译器编译任何东西,所以我查了一下。
我找到的唯一合适的线程是 this one,但解决方案 'reinstalling binutils' 对我不起作用(尝试了 sudo apt-get install --reinstall binutils
以及 --reinstall gcc
、g++
和 build-essential
)
我想到这个问题的一个可能原因是我昨天安装的 iOS-toolchain - 我不得不安装一些不同的 clang 版本 - 但实际上我没有改变系统汇编器上的任何东西...
如果有人有想法;任何帮助将不胜感激:)
附加信息:
Ubuntu 16.04 LTS 64 位
AMD FX(tm)-6300 六核处理器 × 6
uname -m
returns x86_64
gcc -march=native -v -E - 2>&1 <<<'' | grep "cc1" | egrep -o -e $'-m(arch|tune)=[^ "\']+'
returns -march=bdver2
和 -mtune=bdver2
已经尝试 gcc [...] -march
bdver2
和其他架构
g++ -v -c HelloWorld.cpp
给我:http://pastebin.com/Ks2be0hL
type -a as
说:
as is /usr/local/bin/as
as is /usr/bin/as
as --version
可悲的是再次向我展示错误,但 info as
告诉我它是 binutils-2.26.1-system
来自 2016-08-07
dpkg -S /usr/bin/as
打印:binutils: /usr/bin/as
删除 binutils
并按照以下步骤重新安装:
创建一个安装目录/opt/cross
,并确保您有对.
sudo mkdir -p /opt/cross
sudo chown user /opt/cross
export PATH=/opt/cross/bin:$PATH
下载并安装
wget http://mirrors.muzzy.it/gnu/binutils/binutils-2.9.tar.gz
tar xvf binutils-2.9.tar.gz
cd binutils-2.9
linux32 ./configure --prefix=/opt/cross --target=aarch64-linux --disable-multilib
如果不起作用删除 --target=aarch64-linux
,--disable-multilib
选项意味着我们只希望我们的 Binutils 安装与使用 aarch64 指令集的程序和库一起工作,而不是任何相关指令集比如 aarch32, 运行:
linux32 ./configure --prefix=/opt/cross --disable-multilib
linux32 make
linux32 make install
type -a as
表示 as
是 /usr/local/bin/as
。这就是 gcc 运行,而不是 /usr/bin/as
,因为 /usr/local/bin/as
在您的 $PATH
搜索顺序中首先找到。这就是为什么重新安装软件包等无效的原因:您安装的其他东西(可能是手动安装的)安装了非标准 as
.
看看 /usr/local/bin/as
并弄清楚它来自哪里,以及如何处理它。现在您可以将其重命名为 as.unknown
或其他名称,然后一切都将使用正常的系统汇编器 (/usr/bin/as
).