您选择的 CPU 不支持 x86-64 指令集
CPU you selected doesn't support x86-64 instruction set
我想编译一个程序,它有很多 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 位代码,请使用选项-m32
to gcc。-mtune=i386
不正确。
相关文章:
- 您选择的 CPU 不支持 x86-64 指令集
- std::atomic::fetch_add是x86-64上的串行化操作
- Apple Mach-O-Linker 错误:在体系结构 x86-64 中找不到从(行)引用的变量
- x86-64 程序集:为什么偏移 25 字节
- 为新的指令集扩展程序进行了优化的代码的向后兼容性
- DIS(P X)-X在GCC Linux X86-64 C 中始终导致Pointer P和Integer X的P
- 什么是 gcc Linux x86-64 C++中的有效指针
- X86-64上的C :何时通过结构/类在寄存器中返回
- SSE交叉平面图的指令集
- 在Visual Studio 2015中检测与C 宏一起使用的SIMD指令集
- x86-64 调用约定中的返回值
- 我需要制作多个可执行文件来针对不同的指令集吗
- C++Mac上使用Linux库(x86_64-Apple-Darwin上的elf64-x86-64)
- x86-64上检查指针范围是否跨越N字节对齐地址的最快方法
- 如何使用C++11为x86(-64)安全地编写测试和测试集(TATAS)自旋锁
- 在 x86-64 平台上为 C(++) 中的 64 位无符号参数计算 (a*b)%n FAST
- x86-64 movl and cmpl difference
- 链接每个指令集NDK的预构建库
- visual x86-64 MSVC++/Intel C++更改int、long等的大小
- x86-64 汇编程序中的无限循环