スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CentOS 5.4にObjective-C環境作成

インストールするものをRPM化したかったから

# checkinstall --inspect

して

# cd /usr/src/redhat/RPMS/i386
# rpm -ivh ~.rpm

でインストールしてるけど、特に必要ない人はそれぞれ

# make

の後

#make install

で良い。

【libffiのインストール】

http://sourceware.org/libffi/
とかから
libffi-3.0.9.tar.gz
をダウンロード。

# tar zxf libffi-3.0.9.tar.gz
# ./configure --prefix=/usr
# make
# checkinstall --inspect

インストール時に

ファイル /usr/share/info/dir (パッケージ libffi-3.0.9-1.i386 から) は、パッケージ info-4.8-14.el5.i386 からのファイルと競合しています。

とかエラーが出るのでvi編集画面で/usr/share/info/dirの行を削除。

# cd /usr/src/redhat/RPMS/i386
# rpm -ivh libffi-3.0.9-1.i386.rpm

/usr/includeにヘッダファイルがインストールされないから、

# cd /usr/include
# ln -s /usr/lib/libffi-3.0.9/include/ffi.h .
# ln -s /usr/lib/libffi-3.0.9/include/ffitarget.h .

次に
http://www.gnustep.org/
から
gnustep-make-2.2.0.tar.gz
gnustep-base-1.19.3.tar.gz
gnustep-gui-0.16.0.tar.gz
gnustep-back-0.16.0.tar.gz
をダウンロード

【gnustep-makeのインストール】

# tar zxf gnustep-make-2.2.0.tar.gz
# ./configure --with-layout=fhs --prefix=/usr
# checkinstall --inspect
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh gnustep-make-2.2.0-1.i386.rpm
# sh /usr/share/GNUstep/Makefiles/GNUstep.sh
# export GNUSTEP_MAKEFILES=/usr/share/GNUstep/Makefiles

【gnustep-baseのインストール】

# tar zxf gnustep-base-1.19.3.tar.gz
# ./configure --prefix=/usr
# make
# checkinstall --inspect
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh gnustep-base-1.19.3-1.i386.rpm

【gnustep-guiのインストール】

# yum install libjpeg-devel
# yum install libtiff-devel
# yum install libpng-devel
# tar zxf gnustep-gui-0.17.1.tar.gz
# ./configure --prefix=/usr
# make
# checkinstall --inspect
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh gnustep-gui-0.17.1-1.i386.rpm

【gnustep-backのインストール】

# yum install libX11-devel
# yum install libXt-devel
# yum install freetype-devel
# yum install libart_lgpl-devel
# tar zxf gnustep-back-0.17.1.tar.gz
# ./configure --prefix=/usr
# make
# checkinstall --inspect
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh gnustep-back-0.17.1-1.i386.rpm

【試しにObjective-Cのソースコンパイルと実行】

ヘッダファイル: Class1.h, Class2.h
ソースファイル: Class1.m, Class2.m

をコンパイルするとする。

Makefileはこんな感じ↓

CC        = gcc
CFLAGS    = -O2 -fconstant-string-class=NSConstantString
INCLUDES    = Class1.h Class2.h
LIBS        = -lgnustep-base
OBJS        = Class1.o Class2.o
TARGET    = a.out

$(TARGET): $(OBJS)
            $(CC) -o $@ $(OBJS) $(LIBS)

%.o: %.m
            $(CC) $(CFLAGS) -c $*.m -o $*.o

clean:
            rm -f $(TARGET) $(OBJS)

ポイントは、
-fconstant-string-class=NSConstantString

-lgnustep-base
を付けること。

で、コンパイル↓
$ make

それから実行↓
$ ./a.out

実行時に

2010-03-14 17:03:34.903 a.out[6391] Unknown time zone name `JST'.
2010-03-14 17:03:34.903 a.out[6391] Using time zone with absolute offset 0.

とか出るのは

/usr/lib/GNUstep/Libraries/gnustep-base/Versions/1.19/Resources/NSTimeZones/zones/JST

がないせい。なので、

# cd /usr/lib/GNUstep/Libraries/gnustep-base/Versions/1.19/Resources/NSTimeZones/zones/
# ln -s Japan JST

この記事のトラックバックURL

http://ysmt.blog21.fc2.com/tb.php/284-f1138d16

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。