Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25427
  • 博文数量: 7
  • 博客积分: 192
  • 博客等级: 入伍新兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-21 08:41
文章分类

全部博文(7)

文章存档

2011年(7)

我的朋友
最近访客

分类: WINDOWS

2011-02-12 15:38:43

TeXLive套装开放源代码,在Windows下编译需要安装有Msys/gcc,另外还需要fontconfig
代码编译倒是不太难,下载代码下来,在解开的源代码目录下建立一个专门的构建
目录,比如build-dir

依道理来说,不建立也可以编译,但在编译web2c的时候会出问题,因为生成的Makefile
中tangle.exe会根据.web文件生成pascal代码时,判断WEBINPUTS环境变量时,如果两
个数值都是当前目录,会出错,出错原因未知。

在build-dir目录下运行上一级目录下的configure脚本,整体脚本大致如下:
../configure --enable-cxx-runtime-hack --disable-native-texlive-build --disable-dialog --enable-etex --disable-debug

配置脚本时,通常会卡在一个check gcc depend xxx之类的上面,查看任务管理器发现
cp.exe在狂消耗CPU,估计是gcc目录下的cp.exe与msys有冲突,因此将gcc的bin目录的
cp.exe改名,之后就可以完全通过配置来生成Makefile了。

如果环境没有问题,那么很快就可以生成Makefile,然后执行make命令就可以开始编译了
编译需要大概一到两小时,生成的一些.o/.a文件等等大概会到1.3G左右。
在编译过程中,由于我环境上mingw32的gcc的头文件中,sys/time.h与sys/timeb.h同时存在
这在编译一些程序时会报告出错,比如编译dvisvgm时会报告找不到gettimeofday函数,其实
只需要将dvisvgm下生成的config.h中HAVE_GETTIMEOFDAY与HAVE_SYS_TIME_H注释掉即
可以了
第二个问题是luatex还是xetex在编译时会自动认为sys/time.h存在,且强制引用了gettimeofday
因此,我们还是需要实现这个函数,并且必须编译成.a文件
代码如下:
#include
#include
#include

int gettimeofday (struct timeval *tv, void *tz)
{
        struct timeb tb;
        ftime(&tb);

  tv->tv_sec = tb.time;
  tv->tv_usec = tb.millitm * 1000;
 
  return 0;
}

将这段代码用gcc编译成.o,然后加入到系统一个.a里面,整个工程就可以编译链接通过了
编译完后,使用make install命令即可将程序安装到/texlive目录,安装后的程序并没有去掉
调试符号,使用命令strip *.exe即可。

这时候安装好的TeXLive内容缺失很多,基本上只是一些EXE生成了,后续再研究如何准备
系统必备文件。
阅读(2819) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-06 17:15:04

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com

chinaunix网友2011-03-06 17:15:04

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com