Ubuntu 中出现“Mach-O 64 位 x86_64 可执行文件”错误

Ubuntu 中出现“Mach-O 64 位 x86_64 可执行文件”错误

我在 MacOS 上修改了 ARToolkit 的一些代码,现在需要使用 Windows 子系统(Ubuntu)进行编译。我已遵循ARToolkit 用户手册指令并安装了所有使用 Ubuntu 进行编译的库。

这是我的 makefile:

INC_DIR= ../../include
LIB_DIR= ../../lib
BIN_DIR= .

CC=cc
LDFLAG= -L$(LIB_DIR)
LIBS= $(shell pkg-config --libs opencv) -lARgsub -lARvideo -lAR -framework GLUT -framework OpenGL -framework CoreFoundation 
CFLAG= $(shell pkg-config --cflags opencv) -O -I$(INC_DIR) -Wno-deprecated-declarations 

OBJS = SOIL2/SOIL2.o SOIL2/etc1_utils.o SOIL2/image_DXT.o SOIL2/image_helper.o
HEADDERS =

all: $(BIN_DIR)/simple $(BIN_DIR)/simple2

$(BIN_DIR)/simple: simple.o $(OBJS)
    ${CC} -o $(BIN_DIR)/simple simple.o $(OBJS) $(LDFLAG) $(LIBS)


$(BIN_DIR)/simple2: simple2.o $(OBJS)
    ${CC} -o $(BIN_DIR)/simple2 simple2.o $(OBJS) $(LDFLAG) $(LIBS)


simple.o: simple.c $(HEADDERS)
    ${CC} $(CFLAG) -c simple.c

simple2.o: simple2.c $(HEADDERS)
    ${CC} $(CFLAG) -c simple2.c

clean:
    rm -f *.o
    rm -f $(BIN_DIR)/simple
    rm -f $(BIN_DIR)/simple2

allclean:
    rm -f *.o
    rm -f $(BIN_DIR)/simple
    rm -f $(BIN_DIR)/simple2
    rm -f Makefile

现在我可以成功使用 makefile 进行编译,但当我尝试运行程序时遇到错误:

./simple: cannot execute binary file: Exec format error

然后我用文件命令检查:

Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE>

我的机器是这样的:

Linux Raisa 4.4.0-17134-Microsoft #285-Microsoft Thu Aug 30 17:31:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux

我也读过这里的帖子:

  1. 我可以在 Linux 上运行 Mach-O 可执行 i386 二进制文件吗?(2010 年询问)
  2. 在 Linux 机器上运行 Mach-O 64 位二进制文​​件有哪些替代方法?(2017 年询问)

基本上他们都说我们对此无能为力。这仍然适用吗?这是我第一次在编译程序时需要在操作系统之间切换,我对此并不熟悉。如果我应该编辑部分,我需要修改哪个具体部分?

相关内容