Я пытаюсь использовать библиотеку C в проекте iPhone. Я очень зеленый с разработкой iPhone.
Моя библиотека
Я уже несколько дней борюсь за то, чтобы эта библиотека была встроена в статическую библиотеку, которую я могу использовать как для симулятора (i386), так и для ARM7.
Используя библиотеку, включающую конфигурацию и make-файл, я могу собрать библиотеку без проблем. Однако, если я отредактирую make-файл, чтобы попытаться собрать эту же библиотеку, но нацеливаться на архитектуру armv7, я получу много ошибок. Кажется, ошибки сообщают, что некоторые заголовочные файлы не могут быть найдены.
Так пытается ли компилятор искать в разных местах заголовочные файлы в зависимости от целевой архитектуры?
Это файл make, который я отредактировал, чтобы попытаться собрать для armv7:
# $Id: Makefile.in 62 2005-03-09 21:11:53Z gyunaev $
CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1
CFLAGS = -Wall -DIN_BUILDING_LIBIRC -O3 -DENABLE_THREADS -D_REENTRANT
AR=ar cr
RANLIB=ranlib
INCLUDES=-I../include
OBJS = libircclient.o
all: lib
lib: libircclient.a
install: lib
-mkdir /usr/local/include
-mkdir /usr/local/lib
cp ../include/libircclient.h /usr/local/include/libircclient.h
cp ../include/libirc_errors.h /usr/local/include/libirc_errors.h
cp ../include/libirc_events.h /usr/local/include/libirc_events.h
cp libircclient.a /usr/local/include/lib/libircclient.a
$(OBJS): utils.c dcc.c errors.c portable.c sockets.c colors.c
libircclient.a: $(OBJS)
$(AR) libircclient.a $(OBJS)
$(RANLIB) libircclient.a
clean:
rm -f libircclient.a $(OBJS)
distclean: clean
-rm -f Makefile
.c.o:
@echo "Compiling $<"
@$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
Вот пример ошибок компиляции, которые я испытываю:
Compiling libircclient.c
In file included from /usr/include/sys/_types.h:33,
from /usr/include/_types.h:27,
from /usr/include/stdio.h:64,
from portable.c:18,
from libircclient.c:15:
/usr/include/machine/_types.h:36:24: error: arm/_types.h: No such file or directory
In file included from /usr/include/_types.h:27,
from /usr/include/stdio.h:64,
from portable.c:18,
from libircclient.c:15:
/usr/include/sys/_types.h:94: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_blkcnt_t’
/usr/include/sys/_types.h:95: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_blksize_t’
/usr/include/sys/_types.h:96: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_dev_t’
Я все об этом говорю неправильно? Редактировать make-файл тупо? :) Как вы unix ниндзя справиться с этой ситуацией? Некоторые исследования привели меня к мысли, что мне нужно создать универсальную библиотеку ...
Спасибо!