Android 上移植 Ghostscript 9.04 静态编译

、说明

因为Android没有glib库,而gcc默认为动态编译,为了使程序能在开发板上运行,我们自己的C程序需要采用静态编译。

ghostscript的下载地址为http://downloads.ghostscript.com/public/。我用的是ghostscript-9.04。

二、网上常见的方法

1.获取源代码

解压ghostscript-9.04.tar.gz ,并将解压后的ghostscript-9.04目录拷贝成ghostscript-9.04-pc和ghostscript-9.04-arm两分,分别用于编译PC主机上的gs和arm-linux上的gs。

命令:

1 $tar zxvf ghostscript-9.04.tar.gz
2 $cp ghostscript-9.04 ghostscript-9.04-pc -R
3 $mv ghostscript-9.04 ghostscript-9.04-arm

2.编译PC主机上的gs

命令:

1 $cd ghostscript-9.04-pc/
2 $./configure
3 $make

这样就编译出了PC机上的gs,后面交叉编译时需要用到这一步编译出的中间文件,在./obj/aux/目录。

3.编译arm-linux上的gs

配置环境变量:

在环境变量PATH中添加交叉编译工具链的路径(arm-linux-gcc的路径)。

命令:

1 $export PATH=$PATH:/toolschain/4.5.1/bin

开始编译:

这里的./configure命令需要与PC主机上的不同。

命令:

1 $cd ../ ghostscript-9.04-arm/
2 $./configure --host=arm-linux
3 $make

编译过程会出现下面的错误

出现错误:

./obj/aux/echogs-w ./obj/devs.tr - -include ./obj/unix_

./obj/aux/echogs:1: Syntax error: word unexpected (expecting ")")

make:*** [obj/devs.tr] 错误 2

出错原因:

编译过程需要一些中间文件(echogs、genarch、genconf、mkromfs),这些文件在这里被编译成了arm-linux的,要在PC主机上运行者些文件是不行的,只好从ghostscript-9.04-pc/obj/aux/拷贝过来。

解决方法:

将ghostscript-9.04-pc/obj/aux/的三个文件echogs、genarch、genconf拷贝到ghostscript-9.04-arm/obj/aux/

命令:

1 $cp ../ghostscript-9.04-pc/obj/aux/echogs ./obj/aux/echogs
2 $cp ../ghostscript-9.04-pc/obj/aux/genarch ./obj/aux/genarch
3 $cp ../ghostscript-9.04-pc/obj/aux/genconf ./obj/aux/genconf
4 $make

出现错误:

./obj/aux/mkromfs:2: Syntax error: word unexpected (expecting ")")

make:*** [obj/gsromfs1_.c] 错误 2

解决方法:

将ghostscript-9.04-pc/obj/aux/的文件mkromfs拷贝到ghostscript-9.04-arm/obj/aux/。注意,mkromfs需要更新修改时间, 否则它会被重新创建

命令:

1 $cp ../ghostscript-9.04-pc/obj/aux/mkromfs ./obj/aux/mkromfs
2 $touch ./obj/aux/mkromfs
3 $make

编译完成,但是并没有静态编译,这样不能在Android下运行。主要是最后链接时没有使用-static。

找到./base/unixlink.mak,这个文件最后一部分用于最后链接。

将56行

$(ECHOGS_XE)-a $(ldt_tr) -s - $(EXTRALIBS) $(STDLIBS)

改为

$(ECHOGS_XE)-a $(ldt_tr) -s - $(EXTRALIBS) $(STDLIBS) -static

命令:

1 $rm bin/gs
2 $/bin/sh <./obj/ldt.tr

编译成功,可以下载到开发板上试试了

三、对移植ghostscript-9.04过程的改进

1 $tar zxvf ghostscript-9.04.tar.gz
2 $cd ghostscript-9.04
3 $./configure --host=arm-linux

修改Makefile:

320行:修改STDLIBS=-lpthread-lm 为STDLIBS=-lpthread -lm-static

387行:修改CCAUX=arm-linux-gcc为CCAUX=gcc

#make

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Ghostscript是一个开源的用于处理PostScript和PDF文件的软件。交叉编译是指在一台操作系统上编译适用于另一台不同操作系统的软件。 为了将Ghostscript交叉编译到目标平台上,我们需要做以下几个步骤: 1. 安装交叉编译工具链:根据目标平台的架构,我们需要安装对应的交叉编译工具链。例如,如果目标平台是ARM架构,则需要安装ARM交叉编译工具链。 2. 配置编译环境:设置交叉编译工具链的环境变量,以便系统可以识别和使用该工具链。例如,将交叉编译工具链的路径添加到PATH环境变量中。 3. 下载Ghostscript源代码:从官方网站或代码仓库下载Ghostscript的源代码。 4. 进入源代码目录:使用命令行切换到Ghostscript源代码的目录。 5. 配置编译选项:运行configure命令,并通过指定目标平台的参数来配置编译选项。例如,如果目标平台是ARM架构,则需要指定--host=arm参数。 6. 运行make命令:执行make命令开始编译Ghostscript。在此过程中,编译器会使用交叉编译工具链来生成适用于目标平台的二进制文件。 7. 完成编译:等待编译过程完成,如果没有出现错误,那么Ghostscript就成功地被交叉编译为目标平台的可执行文件。 8. 部署Ghostscript:将编译得到的可执行文件复制到目标平台上,并根据需要配置相关环境变量。现在,Ghostscript就可以在目标平台上运行和使用了。 总结:Ghostscript的交叉编译过程包括安装交叉编译工具链、配置编译环境、下载源代码、配置编译选项、运行make命令,最后将编译得到的可执行文件部署到目标平台上。这样就实现了将Ghostscript编译成适用于不同操作系统的版本。 ### 回答2: Ghostscript是一种用于处理PostScript和PDF文件的开源软件。交叉编译是指在一台计算机上编译生成运行在另一种计算机体系架构上的可执行文件。 在进行Ghostscript的交叉编译时,需要首先确定目标体系架构,例如编译生成运行在ARM架构或者其他嵌入式设备上的可执行文件。 首先,需要准备开发环境。在Linux系统上,可以通过安装交叉编译工具链来配置开发环境。这样可以在本地计算机上进行开发和编译,而生成的可执行文件可以在目标设备上运行。 其次,需要下载Ghostscript的源代码,这可以在Ghostscript的官方网站上找到。将源代码解压到本地计算机的开发环境中。 然后,根据目标设备的体系架构配置交叉编译选项。一般来说,可以通过设置环境变量或者在编译命令中指定交叉编译工具链的路径和相关参数来进行配置。 接下来,使用交叉编译工具链中提供的编译器和工具Ghostscript的源代码进行编译。可以使用类似以下的命令进行编译: ``` ./configure --host=target_arch --build=host_arch --disable-afpl --disable-runpath --disable-dynamic --prefix=target_install_path make make install ``` 其中,`target_arch`是目标设备的体系架构,`host_arch`是本地计算机的体系架构,`target_install_path`是指定生成的可执行文件安装的路径。 最后,将生成的可执行文件通过适当的方式拷贝到目标设备上,并进行测试和调试。 Ghostscript的交叉编译过程需要一定的编程和系统知识,并且需要根据具体的目标设备和开发环境来进行配置。 ### 回答3: Ghostscript是一个开源的跨平台的解释器,用于处理PostScript和PDF文件。它支持在不同平台上进行交叉编译,以便在目标平台上运行。 在进行Ghostscript的交叉编译之前,您需要安装所需平台的交叉编译工具链。这些工具链可用于生成适用于目标平台的二进制可执行文件。 首先,您需要下载Ghostscript的源代码。在下载之后,解压缩文件到您选择的目录中。然后,进入源代码目录并创建一个新的目标文件夹,您可以使用下面的命令进行操作: ``` cd ghostscript源代码目录 mkdir build目标文件夹 cd build目标文件夹 ``` 接下来,您需要运行CMake来生成交叉编译所需的Makefile。您可以使用下面的命令进行操作: ``` cmake .. -DCMAKE_TOOLCHAIN_FILE=path/to/toolchain_file.cmake -DCMAKE_INSTALL_PREFIX=output_install_dir ``` 上述命令中,`path/to/toolchain_file.cmake`应替换为您安装的交叉编译工具链的路径。而`output_install_dir`是您指定的输出目录。 运行完上述命令后,会生成相应的Makefile。然后,您可以使用make命令编译Ghostscript。使用下面的命令进行操作: ``` make ``` 编译完成后,您可以使用make install命令将编译好的文件安装到指定的输出目录中。使用下面的命令进行操作: ``` make install ``` 现在,您可以在指定的输出目录中找到Ghostscript的可执行文件和其他所需文件。这些文件已经编译为适用于目标平台的二进制文件,可以在目标平台上运行。 这就是关于Ghostscript交叉编译的简单步骤。希望以上回答能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值