今天我想重新编译我的一个项目。编译这个项目已经在我的机器上运行,但这次发生了错误。
编译器输出:
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,但解决方案'重新安装binutils'对我不起作用(尝试sudo apt-get install --reinstall binutils
以及--reinstall gcc
,g++
和build-essential
)
我想到的这个问题的一个可能原因是我昨天安装的iOS工具链 - 我必须安装一些不同的clang版本 - 但实际上我没有改变系统的汇编程序......
如果有人有想法;任何帮助将不胜感激:))
Ubuntu 16.04 LTS 64bit
AMD FX(tm)-6300六核处理器×6
uname -m
返回x86_64
gcc -march=native -v -E - 2>&1 <<<'' | grep "cc1" | egrep -o -e $'-m(arch|tune)=[^ "\']+'
返回-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
告诉我2016年7月7日的binutils-2.26.1-system
dpkg -S /usr/bin/as
打印:binutils: /usr/bin/as
答案 0 :(得分:1)
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
)。
答案 1 :(得分:0)
删除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
如果dos不起作用删除--target=aarch64-linux
,--disable-multilib
选项意味着我们只希望我们的Binutils安装使用aarch64指令集来处理程序和库,而不是任何相关的指令集,例如aarch32,运行:
linux32 ./configure --prefix=/opt/cross --disable-multilib
linux32 make
linux32 make install