@frilix
Иногда "творю"

File was built for archive which is not the architecture being linked (x86_64)?

Доброго времени суток! Пытаюсь настроить Soil под мак ось. Есть следующий cmake файл:
# SOIL makefile for linux (based on the AngelScript makefile)
# Type 'make' then 'make install' to complete the installation of the library

# For 'make install' to work, set LOCAL according to your system configuration
LOCAL = /opt/local

LIB = libSOIL.a
INC = SOIL.h

SRCDIR = ../../src
LIBDIR = ../../lib
INCDIR = ../../src
OBJDIR = obj

CXX = gcc
CXXFLAGS = -arch x86_64 -Xarch_x86_64 -O2 -s -Wall
DELETER = rm -f
COPIER = cp

SRCNAMES = \
  image_helper.c \
  stb_image_aug.c  \
  image_DXT.c \
  SOIL.c \

OBJ = $(addprefix $(OBJDIR)/, $(notdir $(SRCNAMES:.c=.o)))
BIN = $(LIBDIR)/$(LIB)

all: $(BIN)

$(BIN): $(OBJ)
	ar r $(BIN) $(OBJ)
	ranlib $(BIN)
	@echo -------------------------------------------------------------------
	@echo Done. As root, type 'make install' to install the library.

$(OBJDIR)/%.o: $(SRCDIR)/%.c
	$(CXX) $(CXXFLAGS) -o $@ -c $<


clean:
	$(DELETER) $(OBJ) $(BIN)

install: $(BIN)
	@echo Installing to: $(LOCAL)/lib and $(LOCAL)/include...
	@echo -------------------------------------------------------------------
	$(COPIER) $(BIN) $(LOCAL)/lib
	$(COPIER) $(INCDIR)/$(INC) $(LOCAL)/include
	@echo -------------------------------------------------------------------
	@echo SOIL library installed. Enjoy!

uninstall:
	$(DELETER) $(LOCAL)/include/$(INC) $(LOCAL)/lib/$(LIB)
	@echo -------------------------------------------------------------------
	@echo SOIL library uninstalled.

.PHONY: all clean install uninstall


Выполняя инструкции make install получаю желанную библиотеку, но при подключении к проекту и попытке скомпилировать получаю ошибку:

ld: warning: ignoring file /opt/local/lib/libSOIL.a, file was built for archive which is not the architecture being linked (x86_64): /opt/local/lib/libSOIL.a

Вроде при создании библиотеки флаги проставил: CXXFLAGS = -arch x86_64 -Xarch_x86_64 -O2 -s -Wall

В чем может быть причина?
P. S  Система El Capital
  • Вопрос задан
  • 268 просмотров
Решения вопроса 1
Это флаги c++ компилятора. А код у вас на C.

CFLAGS = -arch x86_64 -Xarch_x86_64 -O2 -s -Wall
Попробуйте так.

А вообще архитектура и разрядность - разные понятия.
CFLAGS=-arch generic -m64 -O2 -s -Wall
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы