在文档转换器中,需要在linux上安装swftools,经历了一番曲折过程终于安装成功。swftools安装包从http://www.swftools.org/download.html上面下载。

在./configure过程中会提示需要依赖包freetype和jpegsrc,这两个依赖包可以从官网上下载,也可以从swftools上下载http://download.savannah.gnu.org/releases/freetype/和http://www.ijg.org/files/上下载。

  • 安装freetype-2.5.3.tar.gz
       tar -xzvf freetype-2.5.3.tar.gz
       cd freetype-2.5.3
       ./configure
       make 
       make install
  • 安装jpegsrc.v9a.tar.gz
       tar -xzvf jpegsrc.v9a.tar.gz
       cd jpeg-9a
       ./configure
       make 
       make install
  • 安装swftools
             解压并执行

      tar -xzvf swftools-2013-04-09-1007.tar.gz
      cd swftools-2013-04-09-1007
      ldconfig  /usr/local/lib

提示错误ldconfig: /lib64/libz.so.1 is not a symbolic link, 解决方法是

      cd /lib64/
      ls -al

看到libz.so.1不是一个连接而是一个文件

      rm -rf libz.so.1
      ln -s /lib64/libz.so.1.2.8 /lib64/libz.so.1  

继续执行

      ./configure --prefix=/usr/local/swftools
      make 

在编译jpeg.c时出错,见图

     
     源代码错误,提示swftools-2013-04-09-1007/lib/jpeg.c没有定义常量TRUE,检查并修改jpeg.c文件,添加以下内容
  #include "types.h"

屏蔽365行的typedef unsigned char U8后,重新编译swftools

另外几种错误

gif2swf.c: In function ‘MovieAddFrame’:
gif2swf.c:233: error: too few arguments to function ‘DGifOpenFileName’
gif2swf.c:239: warning: implicit declaration of function ‘PrintGifError’
gif2swf.c:458: error: too few arguments to function ‘DGifCloseFile’
gif2swf.c: In function ‘CheckInputFile’:
gif2swf.c:491: error: too few arguments to function ‘DGifOpenFileName’
gif2swf.c:521: error: too few arguments to function ‘DGifCloseFile’
make[1]: *** [gif2swf.o] Error 1
make[1]: Leaving directory `/home/pjroot/swftools-2013-04-09-1007/src'
make: *** [all] Error 2

错误原因:
        由于giflib 5.1的DGifOpenFileName函数和DGifCloseFile函数参数签名发生变化,而gif2swf.c中调用仍然使用旧有版本导致参数不匹配
DGifOpenFileName变化

GifFileType *DGifOpenFileName(char *GifFileName)//old
GifFileType *DGifOpenFileName(char *GifFileName, int *ErrorCode) //new

DGifCloseFile变化

int DGifCloseFile(GifFileType *GifFile) // old
int DGifCloseFile(GifFileType *GifFile, int *ErrorCode) //new

解决方法:
        gif2swf.c 中几处做修改
        233和491行          
        if ((gft = DGifOpenFileName(sname)) == NULL) {
        改为
       if ((gft = DGifOpenFileName(sname, 0)) == NULL) {

458和512行   
       DGifCloseFile(gft);改为    DGifCloseFile(gft, NULL);

making all in m4...
cd m4;make all
make[1]: Entering directory `/home/pjroot/swftools-2013-04-09-1007/m4'
make[1]: Leaving directory `/home/pjroot/swftools-2013-04-09-1007/m4'
making all in lib...
cd lib;make all
make[1]: Entering directory `/home/pjroot/swftools-2013-04-09-1007/lib'
gcc -c -DHAVE_CONFIG_H -I/usr/local/swftools/include -I/usr/local/include/freetype2 -I/usr/local/include -fPIC -Wimplicit -Wreturn-type -Wno-write-strings -Wformat -O -fomit-frame-pointer rfxswf.c -o rfxswf.o
In file included from ./bitio.h:23,
from rfxswf.h:37,
from rfxswf.c:28:
./types.h:39:2: error: #error "no way to define 64 bit integer"
./types.h:42:2: error: #error "don't know how to define 32 bit integer"
./types.h:45:2: error: #error "don't know how to define 16 bit integer"
./types.h:48:2: error: #error "don't know how to define 8 bit integer"
make[1]: *** [rfxswf.o] Error 1
make[1]: Leaving directory `/home/pjroot/swftools-2013-04-09-1007/lib'
make: *** [all] Error 2

错误原因:
        没有连接到库,执行以下命令

    ldconfig /usr/local/lib

再次重新configure并make安装

   ./configure --prefix=/usr/local/swftools
   make 
   make install
   make clean
   make distclean
</pre></div></div><p></p><ul><li>测试是否安装正确</li></ul><p><pre name="code" class="plain">pdf2swf -s languagedir=/usr/local/share/xpdf/chinese-simplified -T 9 -s poly2bitmap -s zoom=150 -s flashversion=9 2.pdf -o 2.swf

linux64下安装swftools的更多相关文章

  1. linux下安装swftools工具

    swfTools是一种实用工具与Adobe Flash文件(swf文件)工作的集合.可以把(pdf/gif/png/jpeg/jpg/font/wav) 7种格式转换为swf文件.一般常用于文件在线浏 ...

  2. 在UEFI下安装windows和Ubuntu双系统目前不可行

    UEFI是BIOS的升级,未来将取代BIOS,说白了,就是跟BISO差不多的作用.但是目前比较新的主板兼容两种设置就比较坑了,默认是UEFI,UEFI下只能安装win8以上的版本,和linux64位系 ...

  3. linux 下安装jdk及配置jdk环境图解

    linux 下安装jdk及配置jdk环境图解 一:先检測是否已安装了JDK 运行命令: # rpm -qa|grep jdk  或   # rpm -q jdk  或  #find / -name j ...

  4. Ubuntu16.04下安装MATLAB 2016b!完美运行

    目录 1.下载MATLAB 2016b 2.挂载iso 3.安装MATLAB 4.破解 5.快捷键与运行 1.下载MATLAB 2016b 下载matlab 2016b for linux(可以百度搜 ...

  5. linux下安装cmake方法(1)---下载压缩包

    OpenCV 2.2以后的版本需要使用Cmake生成makefile文件,因此需要先安装cmake:还有其它一些软件都需要先安装cmake 1.在linux环境下打开网页浏览器,输入网址:http:/ ...

  6. 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)

    相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...

  7. Ubuntu1604下安装Liggghts及CFDEM Coupling

    部分内容参考http://www.linuxdiyf.com/linux/16315.html LIGGGHTS是一款开源的DEM软件,来自于著名的分子动力学软件LAMMPS,目前借助于CFDEM C ...

  8. 在Ubuntu下安装ovs-dpdk

    在Ubuntu下安装ovs-dpdk 参考资料:https://software.intel.com/zh-cn/articles/using-open-vswitch-with-dpdk-on-ub ...

  9. CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4

    最新更新参看: Centos 7.0 安装Mono 3.4 和 Jexus 5.6 2012年初写过一篇<32和64位的CentOS 6.0下 安装 Mono 2.10.8 和Jexus 5.0 ...

随机推荐

  1. Hibernate 多对一关系中,在多的一方进行数据的插入

    先看两个映射关系: 部门: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//H ...

  2. 17.2.2.1 The Slave Relay Log Slave中继日志

    17.2.2.1 The Slave Relay Log Slave中继日志 中继日志, 像binary log,有一组文件组成包含events 描述数据库的修改,和一个index文件包含所有使用过的 ...

  3. Android使用listView,BaseAdapter实现列表页

    参考: 1.讲解很详细: blog.csdn.net/psuaije/article/details/7447391 总结: 代码:

  4. A WCF-WPF Chat Application

    http://www.codeproject.com/Articles/25261/A-WCF-WPF-Chat-Application

  5. BJOI2006狼抓兔子

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 9967  Solved: 2267[Submit][S ...

  6. ImageSwitcher 右向左滑动的实现方式

    ImageSwitcher is;...is.setInAnimation(this, android.R.anim.slide_in_left);is.setOutAnimation(this, a ...

  7. java JdbcTemplate源码

    package com.wl.filter; package org.javaresearch.jerch; import java.lang.reflect.Method; import java. ...

  8. 蓝桥杯--算法训练 区间k大数查询

                                                                                 算法训练 区间k大数查询   时间限制:1.0 ...

  9. webscarab使用

    安装jdk-6u20-windows-i586.exe(需要java支持,bat里边就是用java执行的) 设置java环境变量,系统变量里配置 JAVA_HOME变量(默认已经设置好了). 运行 s ...

  10. log4j的使用方法

    1.Log4j是什么? Log4j可以帮助调试(有时候debug是发挥不了作 用的)和分析 2.Log4j的概念 Log4j中有三个主要的组件,它们分别是 Logger.Appender和Layout ...