CentOSでObjective-C開発環境をつくりましょう!
最近、SmartPhoneの開発結構人気がありますので、私もやりたいかな。ちょっと時間かけてCentOS5.3でObjective-Cの開発環境を作ってみた。
環境準備手順:
① 【$HOME】に「conf」、「src」、「src/CURRENT」、「src/CURRENT/etc」を作成。
② 【http://dag.wieers.com/rpm/packages/gnustep-base/】から、【gnustep-base-1.11.2-1.0.rh9.rf.i386.rpm
】をDownLoadして【$HOME/tmp/】に保存する。
③ 【cd $HOME/tmp/】 → 【rpm -i --percent gnustep-base-1.11.2-1.0.rh9.rf.i386.rpm
】
(注:インストール中、何か必要なlibが必要ならyumでインストールしてください)
④ 【$HOME/src/CURRENT/etc】 に、【cat /usr/GNUstep/Library/Libraries】で【gnustep.lib.conf】を作成。
⑤ 【$HOME/src/CURRENT/etc/gnustep.lib.conf】を【$HOME/conf/gnustep.lib.conf】にリンクする。
⑥ 【sudo ln -s $HOME/conf/gnustep.lib.conf /etc/ld.so.conf.d/gnustep.lib.conf】を実行する。
⑦ 【/sbin/ldconfig –v】を実行。
==========================「ここまで、環境の準備が終わります。」===================================
テストプログラムを作成:
1. Fraction.h
#import <Foundation/NSObject.h>
@interface Fraction: NSObject {
int numerator;
int denominator;
}
-(void) print;
-(void) setNumerator: (int)n;
-(void) setDenominator: (int)d;
-(int) numerator;
-(int) denominator;
@end
2. Fraction.m
#import "Fraction.h"
#import <stdio.h>
@implementation Fraction
-(void) print {
printf("%i%i", numerator, denominator);
}
-(void) setNumerator: (int)n {
numerator = n;
}
-(void) setDenominator: (int)d {
denominator = d;
}
-(int) denominator {
return denominator;
}
-(int) numerator {
return numerator;
}
@end
3. main.m
#import <stdio.h>
#import "Fraction.h"
int main(int argc, char* argv[])
{
Fraction* frac = [[Fraction alloc] init];
[frac setNumerator: 1];
[frac setDenominator: 3];
printf("The fraction is: ");
[frac print];
printf("\n");
[frac release];
return 0;
}
4. Compile(詳しい情報は、MANに参考)
【gcc -x objective-c -o xxx main.m Fraction.m -I/usr/GNUstep/Library/Headers/ -L/usr/GNUstep/Library/Libraries/ -lgnustep-base -lobjc】
5. 実行
【./xxx】
_____________________________________________________________________________________________________________
CentOSで:
【-fconstant-string-class=NSConstantString】をGCCコンパイルオプションに追加して、ある【NXConstantString】に関連するエラーが解決できます。
環境準備手順:
① 【$HOME】に「conf」、「src」、「src/CURRENT」、「src/CURRENT/etc」を作成。
② 【http://dag.wieers.com/rpm/packages/gnustep-base/】から、【gnustep-base-1.11.2-1.0.rh9.rf.i386.rpm
】をDownLoadして【$HOME/tmp/】に保存する。
③ 【cd $HOME/tmp/】 → 【rpm -i --percent gnustep-base-1.11.2-1.0.rh9.rf.i386.rpm
】
(注:インストール中、何か必要なlibが必要ならyumでインストールしてください)
④ 【$HOME/src/CURRENT/etc】 に、【cat /usr/GNUstep/Library/Libraries】で【gnustep.lib.conf】を作成。
⑤ 【$HOME/src/CURRENT/etc/gnustep.lib.conf】を【$HOME/conf/gnustep.lib.conf】にリンクする。
⑥ 【sudo ln -s $HOME/conf/gnustep.lib.conf /etc/ld.so.conf.d/gnustep.lib.conf】を実行する。
⑦ 【/sbin/ldconfig –v】を実行。
==========================「ここまで、環境の準備が終わります。」===================================
テストプログラムを作成:
1. Fraction.h
#import <Foundation/NSObject.h>
@interface Fraction: NSObject {
int numerator;
int denominator;
}
-(void) print;
-(void) setNumerator: (int)n;
-(void) setDenominator: (int)d;
-(int) numerator;
-(int) denominator;
@end
2. Fraction.m
#import "Fraction.h"
#import <stdio.h>
@implementation Fraction
-(void) print {
printf("%i%i", numerator, denominator);
}
-(void) setNumerator: (int)n {
numerator = n;
}
-(void) setDenominator: (int)d {
denominator = d;
}
-(int) denominator {
return denominator;
}
-(int) numerator {
return numerator;
}
@end
3. main.m
#import <stdio.h>
#import "Fraction.h"
int main(int argc, char* argv[])
{
Fraction* frac = [[Fraction alloc] init];
[frac setNumerator: 1];
[frac setDenominator: 3];
printf("The fraction is: ");
[frac print];
printf("\n");
[frac release];
return 0;
}
4. Compile(詳しい情報は、MANに参考)
【gcc -x objective-c -o xxx main.m Fraction.m -I/usr/GNUstep/Library/Headers/ -L/usr/GNUstep/Library/Libraries/ -lgnustep-base -lobjc】
5. 実行
【./xxx】
_____________________________________________________________________________________________________________
CentOSで:
【-fconstant-string-class=NSConstantString】をGCCコンパイルオプションに追加して、ある【NXConstantString】に関連するエラーが解決できます。
apache log 管理
cronologを用いてApacheのLogの管理
1. download cronolog
tar xzvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
2. コンパイル
./configure
make
make install
3. ApacheのConfigファイル「httpd.conf」を修正
CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/www/access%Y%m%d.log" combined
4. 保存Configファイル、Apacheを再起動
/etc/rc.d/init.d/httpd stop
/etc/rc.d/init.d/httpd start
Logのフォーマットは、下記のように:
/var/log/httpd/www/access20050918.log
jar ファイルの作成
最近、仕事のためJavaを使います。JARファイルの作成について例で説明します。
1.環境:PWD=/home/sm/tmp/pjb/bus
2.$PWDに、Hello.javaがあります。内容:
package com.sm.jp.sm;
public class Hello {
public void sayHello(String msg) {
System.out.println(msg);
}
}
3. Hello.javaをコンパイル:
#javac -d com/sm/jp/sm/ Hello.java
4. 「$PWD/com/sm/jp/sm/Hello.class」が存在するかどうかを確認:
#ls com/sm/jp/sm/Hello.class
5.$PWDに、Test.javaがあります。内容:
import com.sm.jp.sm.Hello;
public class Test {
public static void main(String[] args) {
Hello hk = new Hello();
hk.sayHello("you there.");
}
}
6. Test.javaをコンパイル:
#javac Test.java
7. 「$PWD/Test.class」が存在するかどうかを確認:
#ls Test.class
8. $PWDにTest.classを実行して、結果を確認:
#java Test
9. 上の8は、$PWDにTest.classしか実行できないですが、これからJARファイル「test.jar」を作成する。 test.jarファイルは、どこでも実行できます。
10.$PWDに、「main.txt」を用意する。内容:
Main-Class: Test
11.$PWDに、「test.jar」を作成する。
#jar -cvfm test.jar main.txt Test.class com/sm/jp/sm/Hello.class
*説明:
①Test.javaにHelloを使っているので、JARファイルを作成するとき関連のHello.classを含む必要。
②JARを作成するとき、DIRの構造が十分注意にください。
12. 「$PWD/test.jar」が存在するかどうかを確認:
#ls test.jar
13. $PWDに、test.jarを実行:
#java -jar test.jar
14. 「$PWD/test.jar」を「/home/xxxx」にコピーして、実行する:
#cp $PWD/test.jar /home/xxxx && cd /home/xxxx
#java -jar test.jar
********************************************************************************
===============================================================================
下記の記事は、もう古いです。上記の方が新しいです。
===============================================================================
1. JAR
の作成について、参考リンク先です。
2. packageの作成
$HOME/javaprj/src/下に、
xtest.javaの内容は:
package bts;
import java.util.*;
public class xtest {
static String msg = new String("hello,jet");
public static void main(String[] args){
System.out.println(msg);
}
}
compile方法:
#javac -d <dirname> <src-file>
main.txtの作成:
Main-Class: <package-name>.<main-class-name><enter key here>
jarにする方法:
#jar -cvfm test.jar main.txt <dirname>
1.環境:PWD=/home/sm/tmp/pjb/bus
2.$PWDに、Hello.javaがあります。内容:
package com.sm.jp.sm;
public class Hello {
public void sayHello(String msg) {
System.out.println(msg);
}
}
3. Hello.javaをコンパイル:
#javac -d com/sm/jp/sm/ Hello.java
4. 「$PWD/com/sm/jp/sm/Hello.class」が存在するかどうかを確認:
#ls com/sm/jp/sm/Hello.class
5.$PWDに、Test.javaがあります。内容:
import com.sm.jp.sm.Hello;
public class Test {
public static void main(String[] args) {
Hello hk = new Hello();
hk.sayHello("you there.");
}
}
6. Test.javaをコンパイル:
#javac Test.java
7. 「$PWD/Test.class」が存在するかどうかを確認:
#ls Test.class
8. $PWDにTest.classを実行して、結果を確認:
#java Test
9. 上の8は、$PWDにTest.classしか実行できないですが、これからJARファイル「test.jar」を作成する。 test.jarファイルは、どこでも実行できます。
10.$PWDに、「main.txt」を用意する。内容:
Main-Class: Test
11.$PWDに、「test.jar」を作成する。
#jar -cvfm test.jar main.txt Test.class com/sm/jp/sm/Hello.class
*説明:
①Test.javaにHelloを使っているので、JARファイルを作成するとき関連のHello.classを含む必要。
②JARを作成するとき、DIRの構造が十分注意にください。
12. 「$PWD/test.jar」が存在するかどうかを確認:
#ls test.jar
13. $PWDに、test.jarを実行:
#java -jar test.jar
14. 「$PWD/test.jar」を「/home/xxxx」にコピーして、実行する:
#cp $PWD/test.jar /home/xxxx && cd /home/xxxx
#java -jar test.jar
********************************************************************************
===============================================================================
下記の記事は、もう古いです。上記の方が新しいです。
===============================================================================
1. JAR
の作成について、参考リンク先です。
2. packageの作成
$HOME/javaprj/src/下に、
xtest.javaの内容は:
package bts;
import java.util.*;
public class xtest {
static String msg = new String("hello,jet");
public static void main(String[] args){
System.out.println(msg);
}
}
compile方法:
#javac -d <dirname> <src-file>
main.txtの作成:
Main-Class: <package-name>.<main-class-name><enter key here>
jarにする方法:
#jar -cvfm test.jar main.txt <dirname>