@王璐 你好,想跟你请教个问题: 我在编译pdf2htmlEX的时候遇到和需要得到帮助的问题: 1.能否把c++0x的编译特性去掉,我机器gcc的版本比较低,提示说不支持c++0x特性。我试着升级到高版本的gcc,但是程序放在其他线上机器提示libstdc++.so不兼容。所以想能否把c++0x特性去掉; 2.编译该项目的时候,提示需要fontforge,poppler(又提示需要fontconfig,freetype),这些我都./configure; make && make install之后,再过来编译pdf2htmlEX的时候,提示说: (在这里我还有一个问题想确认一下:我编译pdf2htmlEX最终想得到一个libpdf2htmlEX.a或者.so文件,再加上一个头文件,想调用其中的API来完成转换,但是我在编译这些项目的时候,看到很多得到的都是可执行文件,我需要的不是这个。但同时我也看到有一些库文件的生成,我想确认的是在编译这些项目的时候,生成的可执行文件对我来说都是没有用的是吧?我的目标是需要库文件。) /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/pdf2htmlEX.cc:15:27: error: goo/GooString.h: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/pdf2htmlEX.cc:17:20: error: Object.h: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/pdf2htmlEX.cc:18:20: error: PDFDoc.h: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/pdf2htmlEX.cc:19:27: error: PDFDocFactory.h: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/pdf2htmlEX.cc:20:26: error: GlobalParams.h: No such file or directory In file included from /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/pdf2htmlEX.cc:24: /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:10:25: error: unordered_map: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:15:19: error: cstdint: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:18:23: error: OutputDev.h: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:19:22: error: GfxState.h: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:20:20: error: Stream.h: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:22:24: error: goo/gtypes.h: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:24:21: error: GfxFont.h: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:25:19: error: Annot.h: No such file or directory /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:26: error: expected class-name before '{' token /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:31: error: 'PDFDoc' has not been declared /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:33: error: 'GBool' does not name a type /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:34: error: 'GBool' does not name a type /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:35: error: 'GBool' does not name a type /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:36: error: 'GBool' does not name a type /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:38: error: 'GfxState' has not been declared /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:41: error: 'CharCode' has not been declared /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:41: error: 'Unicode' has not been declared /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:43: error: 'GfxState' has not been declared /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:57: error: using-declaration for non-member at class scope /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/util/Preprocessor.h:57: error: expected ';' before '<' token /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:77: error: expected ',' or '...' before '&' token /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:77: error: ISO C++ forbids declaration of 'GfxRGB' with no type /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h: In member function 'size_t pdf2htmlEX::GfxRGB_hash::operator()(int) const': /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:79: error: 'rgb' was not declared in this scope /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:79: error: 'colToByte' was not declared in this scope /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h: At global scope: /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:86: error: expected ',' or '...' before '&' token /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:86: error: ISO C++ forbids declaration of 'GfxRGB' with no type /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h: In member function 'bool pdf2htmlEX::GfxRGB_equal::operator()(int) const': /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:88: error: 'rgb1' was not declared in this scope /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:88: error: 'rgb2' was not declared in this scope /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h: At global scope: /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:95: error: expected ',' or '...' before '&' token /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h:95: error: ISO C++ forbids declaration of 'Matrix' with no type /data/home/sunnyshi/coolwanglu-pdf2htmlEX-f138adc/src/HTMLRenderer/HTMLRenderer.h: In member function 'bool pdf2htmlEX::Matrix_less::operator()(int) const': .............................
我把CMakeLists.txt文件修改了一下,在gcc4.1.0下面编译得到如下错误提示:
我来分别回答一下
0.首先来说我这个是个兴趣类项目,可以认为是一个技术原型。具体到每个人的需求,尤其是多平台多编译器支持这种体力活,恐怕没有精力去支持和维护。
1.C++0x甚至可以认为是新的语言,我用这个一个是为了学习,另外确实也极大的提高了效率。之前确实有人提到编译不了,因为当时我要求gcc是4.6,后来去掉了很多依赖,现在已经降到4.4.6了。都删去的工作量太大了,而且并不是件有趣的事情。我觉得总不能让别人把python3的脚本都转换成python2吧。libstdc++可能可以静态链接,当然这个方案并不优美。
2.pdf2htmlEX主要依赖poppler和fontforge,是二进制链接他们的库,具体他们怎么依赖别的库我就不敢肯定了。
3.我知道工作环境,尤其是服务器通常不会用最新版本的软件。不过如果有条件,我的建议是弄一个最新的ubungu或archlinux环境,应该能很容易安装各种依赖,然后就能比较方便地测试和评估pdf2htmlEX.