файл был создан для неподдерживаемого формата файла, который не является связанной архитектурой (x86 _64)

У меня есть файл сборки на OSX Lion

VPATH = src include
CFLAGS ="-I include -std=gnu99"

hello: hello.o
    gcc $^ -o $@

hello.o: hello.h hello.c
    gcc $(CFLAGS) -c $< -o $@

Но когда я пытаюсь запустить этот файл сборки, я получаю следующую ошибку

    ld: warning: ignoring file hello.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

Я пытался использовать флаг -arch x86_64, но все равно получаю ту же ошибку.

Выполнение команды archдает :i386.

uname -aговорит мне:Darwin Kernel Version 11.3.0: Thu Jan 12 18:47:41 PST 2012; root:xnu-1699.24.23~1/RELEASE_X86_64 x86_64

Я также пытался добавить переключатель -march=x86-64, как описано в этом ответе файл был создан для i386, который не связан с архитектурой (x86 _64 )при компиляции OpenCV2.2 для iOS 4.2 на Mac OSX 10.6 , но у меня это не сработало.

Вывод из командной строки::

gcc -I include -std=gnu99 -m64  -c include/hello.h -o hello.o  
gcc -I include -std=gnu99 -m64  hello.o -o hello
ld: warning: ignoring file hello.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [hello] Error 1

7
задан Community 23 May 2017 в 12:24
поделиться