Недопустимая инструкция (ядро сброшено) с использованием графической библиотеки Ubuntu VM + JUCE
Всякий раз, когда я пытаюсь запустить скомпилированную программу, используя графическую библиотеку JUCE, с университетского компьютера (у которого, как мне кажется, i5s, но я не уверен в специфике), она работает правильно, без ошибок. Однако, если я пытаюсь запустить его с моего домашнего компьютера (i7-3770), он корректно компилируется, но выдает ошибку SIGILL, я посмотрел на него с помощью gdb, но мои знания по сборке не самые лучшие. Я пытался использовать флаги, такие как "-O2 -march=ivybridge"
и другие вещи, но никакая комбинация, кажется, не работает. Я сократил код до минимума, но я все еще получаю ту же ошибку.
main.cpp:
#include <stdio.h>
#include <graphics.h>
int main(void) {
initialiseGraphics();
loop( [&](){
}
);
return 0;
}
Makefile:
ifeq ($(origin ROOTDIR), undefined)
ROOTDIR=../..
endif
include $(ROOTDIR)/MakefileDefs.inc
# Build path
BUILD_DIR = build
TARGET = circlesAndRects
CPP_SOURCES = main.cpp
#######################################
# build the application
#######################################
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(CPP_SOURCES:.cpp=.o)))
vpath %.cpp $(sort $(dir $(CPP_SOURCES)))
CFLAGS += -I$(INCDIR) -I$(JUCEINSTALL)/modules
LIBS = $(LIBDIR)/libgraphics.a $(JUCELIB) $(LIBDIR)/libufcfgl-30-1.a
$(BUILD_DIR)/%.o: %.cpp Makefile | $(BUILD_DIR)
$(ECHO) compiling $<
$(CC) -c $(CFLAGS) $< -o $@
$(BUILD_DIR)/$(TARGET): $(OBJECTS) $(LIBS) Makefile
$(ECHO) linking $<
$(CC) $(OBJECTS) $(LIBS) $(LINUXLIBFALGS) $(LDFLAGS) -o $@
$(ECHO) success
$(BUILD_DIR):
mkdir -p $@
#######################################
# install
#######################################
install:
#######################################
# clean up
#######################################
clean:
-rm -fR .dep $(BUILD_DIR)
#######################################
# dependencies
#######################################
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
.PHONY: clean all
информация о GDB:
Thread 1 "graphics1" received signal SIGILL, Illegal instruction.
0x000000000043a6ed in juce::File::isDirectory() const ()