Проблема со статической библиотекой в ​​Mac OS X: символы не найдены для архитектуры x86_64

Я пытаюсь создать статическую библиотеку и связать ее с исполняемым двоичным файлом.

Это библиотечная функция:

#include <stdio.h>

int hello() {
    return 10;
}

С помощью этих команд я мог получить статическую библиотеку.

gcc -c io.c 
ar -crv libio.a io.o

Сlip -infoЯ проверил этоx86_64 архитектура.

ar> lipo -info libio.a 
input file libio.a is not a fat file
Non-fat file: libio.a is architecture: x86_64

Это основная функция, которая использует библиотеку.

#include <stdio.h>
extern int hello();

int main(int argc, char *argv[]) {
    printf("%d", hello());
}

Однако, когда я связываю объект со статической библиотекой, у меня возникают ошибки.

gcc main.c -lio -o main -L.

Сообщения об ошибках:

ld: warning: ignoring file ./libio.a, file was built for archive which is not the architecture being linked (x86_64): ./libio.a
Undefined symbols for architecture x86_64:
  "_hello", referenced from:
      _main in main-2c41a0.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я используюar как в/bin/arи Mac OS X - 10.10.2 с clang-602.0.53.

ar> clang -v
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix

Что может быть не так?

Ответы на вопрос(2)

Ваш ответ на вопрос