您选择的 CPU 不支持 x86-64 指令集

CPU you selected doesn't support x86-64 instruction set

本文关键字:x86-64 指令集 不支持 CPU 选择      更新时间:2023-10-16

我想编译一个程序,它有很多 32 位静态库,我无法将其重新编译为 64 位,因为缺少 makefile,但有一些库我应该编译以获得一些静态库以与它们一起使用。

我要编译的库之一有一个生成文件,如下所示:

CC = c++
BIN_DIR = ../lib
BIN = $(BIN_DIR)/libsql.a
CFLAGS = -w -O3 -ggdb3 -g3 -std=c++14 -pipe -mtune=i386 -fstack-protector -static
CPP=AsyncSQL.cpp Semaphore.cpp Statement.cpp Tellwait.cpp
all: $(BIN)
clean:
@echo Delete .obj files
@rm -f *.o
%.o: %.cpp
@echo -e "33[0;32m [OK] 33[0m" $<
@$(CXX) $(CFLAGS) -c $^ -o $@
$(BIN): $(CPP:%.cpp=%.o)
@ar cru $(BIN) $^
@ranlib $(BIN)
@rm -rf *.o

这将产生以下输出:

cc1plus: error: CPU you selected does not support x86-64 instruction set

如果我省略该选项-mtune=i386它将成功编译,但是我应该将其余库编译为 64 位二进制文件,最后我将无法链接到那些静态的 32 位二进制文件。

如何消除该错误?

任何建议将不胜感激。

要在 64 位系统上编译 32 位代码,请使用选项-m32to gcc。-mtune=i386不正确。