最近在Ubuntu上,把JDK 6完整编译一次。
整个编译过程比较繁琐,经常会报莫名其妙的错误,以此帖share给大家,希望大家少走弯路。
关键步骤:
1. apt-get install g++ bison
2. motif library, mozilla header, etc.
3. gcc version
gcc 4.2 不适合编译Hotspot,建议使用gcc 4.0.3,为什么?
test_case.c
int main()
{
char *t = "Testing!";
fprintf(stdout,"%s",t);
return 0;
}
warning: deprecated conversion from string constant to ‘char*’
只要把 static char * 改成 static const char * 的话这个 Warning 就不会出现了。估计是新一代的 GCC 怕程序员在代码中用了 char * 时又不注意的话容易出现越界操作的错误,所以给出个小小的warning来。
gcc-4.0.3 make
make a build directory, entering, from build directory to invoke configure,
make
make install
4. make 分清楚单冒号(:)规则和双冒号(::)规则的区别
include操作仅仅enlarge Makefile
5. j2se/make/common/shared/Defs-utils.gmk
ECHO = /bin/echo -e
echo -e 应该使用绝对路径,否则可能产生问题,调用不支持 -e 选项的echo
因为,有可能调用到built-in echo
6. 编译过程中会出现缺少图片、声音、字体文件等问题,No target:......
可以在JDK 5 release找到这些文件,拷贝过去即可。
7. symbol link
/usr/X11R6/lib/X11/config -> /usr/lib/X11/config
整个编译过程比较繁琐,经常会报莫名其妙的错误,以此帖share给大家,希望大家少走弯路。
关键步骤:
1. apt-get install g++ bison
2. motif library, mozilla header, etc.
3. gcc version
gcc 4.2 不适合编译Hotspot,建议使用gcc 4.0.3,为什么?
test_case.c
int main()
{
char *t = "Testing!";
fprintf(stdout,"%s",t);
return 0;
}
warning: deprecated conversion from string constant to ‘char*’
只要把 static char * 改成 static const char * 的话这个 Warning 就不会出现了。估计是新一代的 GCC 怕程序员在代码中用了 char * 时又不注意的话容易出现越界操作的错误,所以给出个小小的warning来。
gcc-4.0.3 make
make a build directory, entering, from build directory to invoke configure,
make
make install
4. make 分清楚单冒号(:)规则和双冒号(::)规则的区别
include操作仅仅enlarge Makefile
5. j2se/make/common/shared/Defs-utils.gmk
ECHO = /bin/echo -e
echo -e 应该使用绝对路径,否则可能产生问题,调用不支持 -e 选项的echo
因为,有可能调用到built-in echo
6. 编译过程中会出现缺少图片、声音、字体文件等问题,No target:......
可以在JDK 5 release找到这些文件,拷贝过去即可。
7. symbol link
/usr/X11R6/lib/X11/config -> /usr/lib/X11/config
本文分享了在Ubuntu环境中从源代码完整编译JDK6的过程及遇到的问题解决方案,包括依赖安装、配置调整、常见错误处理等,帮助读者避免弯路。
1087

被折叠的 条评论
为什么被折叠?



