我想编译一个程序,其中包含很多32位静态库,由于缺少makefile,我无法将其重新编译为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 "\033[0;32m [OK] \033[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
gcc选项。-mtune=i386
是不正确的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句