- 论坛徽章:
- 0
|
Equinox代码分析
[color="#3f7f5f"]分析org.eclipse.equinox.executable
包
[color="#3f7f5f"]1.编译程序
[color="#3f7f5f"]包的目录:
org.eclipse.equinox.executable
|--
bin
|
|-- carbon
|
| `-- macosx
|
|-- cocoa
|
| `-- macosx
|
|-- gtk
|
| |-- linux
|
| `-- solaris
|
|-- motif
|
| |-- aix
|
| |-- hpux
|
| `-- linux
|
|-- win32
|
| `-- win32
|
`-- wpf
|
`-- win32
|--
contributed
|
|-- gtk
|
| |-- linux
|
| `-- solaris
|
|-- motif
|
| `-- solaris
|
`-- win32
|
`-- win32
|--
gtk_root
|
`-- about_files
|--
library
|
|-- carbon
|
|-- gtk
|
|-- motif
|
|-- photon
|
|-- win32
|
`-- wpf
`--
motif_root
`-- about_files
[color="#3f7f5f"]在大致介绍一下各个目录之前,先说点看到的基础知识
[color="#3f7f5f"]因为eclipse的基础图形库SWT是底层调用系统的图形库,所以编译时,就需要选择当前使用系统的图形库。
[color="#3f7f5f"]Gtk和motif:
motif是早期的unix上的主流图形库,现在linux主要是GTK和QT.因为我的系统是gnome所以我编译是用的是gtk的.
关于
carbon,也是一个很好的开源图形库,感兴趣的话可以了解一下
[color="#3f7f5f"]因为motif目前最新的equniox似乎没有release
只有test
version.所以主要分析GTK,鉴于我们自己要编译代码
所以主要分析目录是
|--
library
|
|-- gtk
[color="#3f7f5f"]1.build
[color="#3f7f5f"]现不管代码细节,build成功了再说,这样分析中修改代码后,才能看到调整后的代码效果,利于分析。
[color="#3f7f5f"]设计到的脚本文件:
build.xml
ant脚本。
最终调用build.sh
build.sh
通过设置环境变量,最终调用make_linux.mak
make_linux.mak
调用make_version.mak获取版本信息
[color="#3f7f5f"]使用[color="#3f7f5f"]build.xml的步骤比较麻烦
因为脚本中的[color="#000080"]eclipse.refreshLocal[color="#3f7f5f"]在命令行下运行时,需要[color="#3f7f5f"]ant的[color="#3f7f5f"]taskdef
[color="#3f7f5f"]需要把
org.eclipse.osgi_3.4.0.v20080605-1900.jar
org.eclipse.core.resources_3.4.0.v20080604-1400.jar
org.eclipse.core.jobs_3.4.0.v20080512.jar
org.eclipse.ant.core_3.2.0.v20080529.jar
org.eclipse.equinox.common_3.4.0.v20080421-2006.jar
[color="#3f7f5f"]org.eclipse.core.runtime_3.4.0.v20080512.jar
[color="#3f7f5f"]放到$ANT_HOME/lib下 (这些包的版本按自己机器就行,我的是equinox3.4下的包)
build.xml添加
然后
运行ant就可以了
$ant
[color="#3f7f5f"]此处用ant并不爽,虽然我本人很喜欢ant。
编译时推荐直接用build.sh
在
library
/gtk
下运行
sh
build.sh -java /usr/local/jdk1.6.0_10/ OPTFLAG=-g PICFLAG=-fpic
此处记得传入参数-java $JAVA_HOME. 因为编译JNI时需要 jni.h头文件,否则会报错,当然喜欢其他方式解决的话 随个人习惯。
最终编译出
eclipse,eclipse_1200.so
如果需要安装(其实是拷贝到
bin/对应操作系统的目录下>)
sh
build.sh install即可
[color="#3f7f5f"](install时会向org.eclipse.equinox.launcher/fragments 下对应的目录里copy eclipse_1200.so过去,所以如果没有这个目录的会报错,不过没关系)
这样如果顺利
就完成了编译工作。 接下来就进入具体代码的分析。
PS:
分析编译脚本过程是个很有趣的过程,不过需要一些ant,shell,make的知识.
几个脚本用到的知识
ant
1.给ant添加lib
2.taskdef的运用
shell
1.``的用法
2.if case while等的用法
make
1.include用法
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1073/showart_1316409.html |
|