Выбранный вами процессор не поддерживает набор инструкций x86-64 - PullRequest
1 голос
/ 25 мая 2020
• 1000 библиотеки для использования вместе с ними.

Одна из библиотек, которую я хочу скомпилировать, имеет 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-битные двоичные файлы, и в конце я не смогу связать эти stati c 32-битные one.

Как я могу устранить эту ошибку?

Любые предложения будут оценены.

1 Ответ

2 голосов
/ 25 мая 2020

Чтобы скомпилировать 32-битный код в 64-битной системе, используйте параметр -m32 в g cc. -mtune=i386 неверно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...