pdflib源码编译
㈠ 如何在编译后,指定安装路径
1. 安装目录变量
在Makefile中,安装目录同样需要使用变量来指定,这样就可以很方便的修汪瞎改文件的安装路径。安装目录的标准命名下边将一一介绍。这些变量基于标准的文件系统结构,这些变量的变种在SVR4、4.4BSD、linux、Ultrix v4以及其它现代操作系统中都有使用。
安装者希望在调用make是改变这些值,(例如 make prefix=/usr install),或者在配置时改变困弊空这些值(例如 configure –prefix=/usr)。GNU包不会对在该系统上这些变量适合于哪些值做任何猜想,或者说GNU包不会猜测这些包应该被安装到哪里是更合适的:GNU包使用缺省的特定设置是为了以便于所有的GNU包行为一致,它允许安装者做任何自己想要的布局。
以下所罗列的两个变量是指定安装文件的根目录。所有其它安装目录都是它们的子目录。注意:文件不能直接安装在这两个目录下。
prefix
这个变量(通常作为实际文件安装目录的父目录,可以理解为其它实际文件安装目录的前缀)用于构造下列(除这两个安装根目录以外的其它目录变量)变量的缺省值。变量“prefix”缺省值是“/usr/local”。创建完整的GNU系统时,变量prefix的缺省值是空值,“/usr”是“/”的符号连接符文件。(如果使用“Autoconf”工具,它应该写成“@prefix@”)。注意:当更改了变量“prefix”以后重新执行“make install”,不会导致可执行程序(终极目标)的重建。
exec_prefix
这个前缀用于构造下列变量的缺省值。变量“exec_prefix”缺省值是“$(prefix)”(如果使用“Autoconf”工具,它应该写为“@exec_prefix@”)。通常,“$(exec_prefix)”目录中的子目录下存放和机器相关文件(例如可执行文件和例程库)。“$(prefix)”目录的子目录存放通用的一般文件。同样:改变“exec_prefix”的值之后执行“make install”,不会重建可执行程序(终极目标)。
文件(包括可执行程序、说明文档等)的安装目录:
bindir
用于安装一般用户可运行的可执行程序。通常它的值为:“/usr/local/bin”,使用时应写为:“$(exec_prefix)/bin”。(使用“Autoconf”工具时,应该为“@bindir@”)
sbindir
安装可在shell中直接调用执行的程序。这些命令仅对系统管理员有用(系统管理工具)。通常它的值为:“/usr/local/sbin”,要求在使用时应写为:“$(exec_prefix)/sbin”。(使用“Autoconf”工具时,应该为“@sbindir@”)
libexecdir
用于安装那些通常不是由用户直接使用,而是由其它程序调用的可执行程序。通常它的值为:“/usr/local/libexec”,要求在使用时应写为:“$(exec_prefix)/libexec”。(使用“Autoconf”工具时,应该为“@libexecdir@”)
程序执行时使用的数据文件可从以下两个方面来分类:
1. 是否可由程序更改。分为两类:程序可修改和不可修改的文件(虽然用户可编辑其中某些文件)。
2. 是否和体系结构相关。分为两类:体系结构无关文件,可被所有类型的机器共享;体系结构相关文件,仅可被相同类型机器、操作系统共享;其它的就是那些不能被任何两个机器共享的文件。
这样就存在六种不同的可卜含能。除编译生成的目标文件(.o文件)和库文件以外,不推荐使用那些和特定机器体系结构相关的文件,使用和体系无关的数据文件更加简洁,而且,它的实现也并不非常困难。
在Makefile中应该使用以下变量为不同类型的文件指定对应的安装目录:
`datarootdir'
The root of the directory tree for read-only architecture-independent data files. This should normally be /usr/local/share, but write it as $(prefix)/share. (If you are using Autoconf, write it as `@datarootdir@'.) `datadir''s default value is based on this variable; so are `infodir', `mandir', and others.
Datarootdir
机器体系结构无关的只读数据文件的根目录。通常它的值为:“/usr/local/share”,使用时应写为:“$(prefix)/share”。(使用“Autoconf”工具时,应该为“@datarootdir@”)。‘datadir’的缺省值是基于这个变量的,`infodir', `mandir'等其它变量的值也是如此。
datadir
用于安装和机器体系结构无关的只读数据文件。通常它的值与’datarootdir’一样,但是我们使用两个变量是为了用户能够移动一些程序特定的文件而不修改如man 文件、info文件的路径。通常它的值为:“/usr/local/share”,使用时应写为:“$(prefix)/share”。(使用“Autoconf”工具时,应该为“@datadir@”)。“$(infodir)”和“$(includedir)”作为例外情况,参考后续对它们的详细描述。
Datadir的定义对所有包都一样,因此你应该安装你的数据在它的子目录下。大部分包安装它们的数据在如此目录下:$(datadir)/package-name/.
sysconfdir
用于安装从属于特定机器的只读数据文件,包括:主机配置文件、邮件服务、网络配置文件、“/etc/passwd”文件等。所有该目录下的文件都应该是普通文本文件(可识别的“ASCII”码文本文件)。通常它的值为:“/usr/local/etc”,在使用时应写为:“$(prefix)/etc”。(使用“Autoconf”工具时,应该为“@sysconfdir@”)。
不要将可执行文件安装在这个目录下(可执行文件的安装目录应该是“$(libexecdir)”或者“$(sbindir)”)。也不要在这个目录下安装那些需要更改的文件(系统的配置文件等)。这些文件应该安装在目录“$(localstatedir)”下。
sharedstatedir
用于安装那些可由程序运行时修改的文件,这些文件与体系结构无关。通常它的值为:“/usr/local/com”,要求在使用时应写为:“$(prefix)/com”。(使用“Autoconf”工具时,应该为“@sharedstatedir@”)
localstatedir
用于安装那些可由程序运行时修改的文件,但这些文件和体系结构相关。用户没有必要通过直接修改这些文件来配置软件包,对于不同的配置文件,将它们放在“$(datadir)”或者“$(sysconfdir)”目录中。“$(localstatedir)”值通常为:“/usr/local/var”,在使用时应写为:“$(prefix)/var”。(使用“Autoconf”工具时,应该为“@localstatedir@”)
libdir
用于存放编译后的目标文件(.o)文件库文件(文档文件或者执行的共享库文件)。不要在此目录下安装可执行文件(可执行文件应该安装在目录“$(libexecdir)”下)。变量libdir值通常为:“/usr/local/lib”,使用时应写为:“$(exec_prefix)/lib”。(使用“Autoconf”工具时,应该为“@libdir@”)
infodir
用于安装软件包的 Info 文件。它的缺省值为:“/usr/local/info”,使用时应写为:“$(prefix)/info”。(使用“Autoconf”工具时,应该为“@infodir@”)
lispdir
用于安装软件包的Emacs Lisp 文件的目录。它的缺省值为:“/usr/local/share/emacs/site-lisp”,使用时应写为:“$(prefix)/share/emacs/site-lisp”。当使用Autoconf工具时,应将写为“@lispdir@”。为了保证“@lispdir@”能够正常工作,需要在“configure.in”文件中包含如下部分:
lispdir='${datadir}/emacs/site-lisp'
AC_SUBST(lispdir)
includedir
用于安装用户程序源代码使用“#include”包含的头文件。它的缺省值为:“/usr/local/include”,使用时应写为:“$(prefix)/include”。(使用“Autoconf”工具时,应该为“@includedir@”)。
除gcc外的大多数编译器不会在目录“/usr/local/include”中搜寻头文件,因此这种方式只适用gcc编译器。这一点应该不是一个问题,因为很多情况下一些库需要gcc才能工作。对那些依靠其它编译器的库文件,需要将头文件安装在两个地方,一个由变量“includedir”指定,另一个由变量“oldincludedir”指定。
oldincludedir
它所指定的目录也同样用于安装头文件,这些头文件用于非gcc的编译器。它的缺省值为:“/usr/include”。(使用“Autoconf”工具时,应该为“@oldincludedir@”)。
Makefile在安装头文件时,需要判断变量“oldincludedir”的值是否为空。如果为空,就不使用它进行头文件的安装(一般是安装完成“/usr/local/include”下的头文件之后才安装此目录下的头文件)。
一个软件包的安装不能替换该目录下已经存在的头文件,除非是同一个软件包(重新使用相同的软件包在此目录下安装头文件)。例如,软件包“Foo”需要在“oldincludedir”指定的目录下安装一个头文件“foo.h”时,可安装的条件为:1.目录“$(oldincludedir)”目录下不存在头文件“foo.h”;2. 已经存在头文件“foo.h”,存在的头文件“foo.h”是之前软件包“Foo”安装的。
检查头文件“foo.h”是否来自于软件包Foo,需要在头文件的注释中包含一个“magic”字符串,使用命令“grep”来在该文件中查找这个magic。
`docdir'
The directory for installing documentation files (other than Info) for this package. By default, it should be /usr/local/share/doc/yourpkg, but it should be written as $(datarootdir)/doc/yourpkg. (If you are using Autoconf, write it as `@docdir@'.) The yourpkg subdirectory, which may include a version number, prevents collisions among files with common names, such as README.
这个目录安装除了Info外的该包提供的文档,它的缺省值/usr/local/share/doc/yourpkg,使用时应写为:“$(datarootdir)/doc/yourpkg”。(使用“Autoconf”工具时,应该为“@docdir@”)。Yourpkg子目录可能包括版本号,为了阻止具有相同文件名字的文件冲突,例如README。
`infodir'
The directory for installing the Info files for this package. By default, it should be, but it should be written as (If you are using Autoconf, write it as `@infodir@'.) infodir is separate from docdir for compatibility with existing practice.
这个目录安装该包的info文件。它的缺省值是:/usr/local/share/info, 使用时应写成:$(datarootdir)/info.(使用“Autoconf”工具时,应该为“@infodir@”).infodir从docdir中单独分离出来为了兼容已经存在的practice。
`htmldir'
`dvidir'
`pdfdir'
`psdir'
Directories for installing documentation files in the particular format. (It is not required to support documentation in all these formats.) They should all be set to $(docdir) by default. (If you are using Autoconf, write them as `@htmldir@', `@dvidir@', etc.) Packages which supply several translations of their documentation should install them in `$(htmldir)/'ll, `$(pdfdir)/'ll, etc. where ll is a locale abbreviation such as `en' or `pt_BR'.
这些目录用于安装特定格式的文档(并不要求支持所有这些格式的文档)。缺省值应该设置为:$(docdir)(使用“Autoconf”工具时,应该为“@htmldir @”等)。
`libdir'
The directory for object files and libraries of object code. Do not install executables here, they probably ought to go in $(libexecdir) instead. The value of libdir should normally be /usr/local/lib, but write it as $(exec_prefix)/lib. (If you are using Autoconf, write it as `@libdir@'.)
`lispdir'
The directory for installing any Emacs Lisp files in this package. By default, it should be /usr/local/share/emacs/site-lisp, but it should be written as $(datarootdir)/emacs/site-lisp.
If you are using Autoconf, write the default as `@lispdir@'. In order to make `@lispdir@' work, you need the following lines in your configure.in file:
lispdir='${datarootdir}/emacs/site-lisp'
AC_SUBST(lispdir)
`localedir'
The directory for installing locale-specific message catalogs for this package. By default, it should be /usr/local/share/locale, but it should be written as $(datarootdir)/locale. (If you are using Autoconf, write it as `@localedir@'.) This directory usually has a subdirectory per locale.
这个目录安装该包用于本地特定消息的目录。缺省值是:/usr/local/share/locale, 但是应该写成:`@localedir@'。这个目录常常对每个locale(本地化)都有一个子目录。
㈡ keil如何打开多个点c并完整编译
点击全局编译按钮
,完成后在相应目录文件夹(之前存放hex文件的路径)下即可看到生成的ethernet.lib文件。
6、lib文件生成后,还需.h文件,h文件有两种方式,一种是保留之前.c文件对应的.h文件,继续照常使用,另一种是可将单独的.h文件合并成一个新的ethernet.h,直接在main.c调用ethernet.h即可。
7、将lib文件剪切放到Ethernet文件路径下,将之前的socket.c、w5500.c等文件删除掉,头文件换成ethernet.h,工程里将ethernet.lib加入到group(ethernet文件夹)里。
8、将取消编译的文件重新打开,将编译后文件类型改回.hex文件,然后全编译,没有错误即完成。
另外,若想将一个.c文件生成一个lib文件,只需保留该.c文件进行编译,.h文件也保持不变,将工程中原先的.c文件替换成.lib文件即可。
用心写好每篇文章,分享给需要的你☺,如果对您有用希望能留下您的脚印(点赞/评论/收藏)!
stm32
c语言
keil mdk
嵌入式
注意!注意!你有一个手机待领取
巨摩互动
广告
Keil对lib封装库反汇编成C语言.pdf
502下载·22评论
2013年5月6日
把c++的exe工程编译为动态库dll静态库lib,并实现调用(超详细)
2087阅读·0评论·1点赞
2020年8月28日
源代码封装成库Lib的方法
504阅读·0评论·0点赞
2022年10月14日
STM32/keil把多个c文件编译为静态库lib
2190阅读·0评论·6点赞
2021年1月5日
C/C++ 静态库(lib)的概念和使用方法
3432阅读·0评论·4点赞
2022年5月2日
Keil 下生成LIB库文件以及如何使用LIB库文件
732阅读·1评论·0点赞
2020年12月19日
注意!注意!你有一个手机待领取
巨摩互动
广告
C语言 之 编译自己的lib库
1457阅读·0评论·1点赞
2020年8月7日
CMake交叉编译简单教程
3.2W阅读·2评论·14点赞
2018年9月7日
如何将c语言封装成dll文件,封装动态库dll与静态库lib(原理及简单实例)
2069阅读·0评论·1点赞
2021年5月21日
keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...
1587阅读·0评论·0点赞
2021年5月21日
keil 加密:编译代码成lib库
454阅读·0评论·0点赞
2022年7月28日
Keil C 里面Lib库文件的生成与调用
11下载·0评论
2020年8月4日
keil C对lib封装库反汇编成C语言
101下载·4评论
2011年4月8日
C语言编译lib库手动添加
1888阅读·0评论·0点赞
2017年6月18日
基于Keil下多文件打包生成Lib库文件的具体操作
2667阅读·3评论·2点赞
2020年1月18日
Windows DOS命令行编译C/C++程序----库文件.lib的链接
1752阅读·0评论·0点赞
2019年2月21日
keil把源代码生成lib的方法
2754阅读·0评论·6点赞
2022年1月25日
keil 编译生成 .lib文件
2244阅读·4评论·1点赞
2018年1月8日
keil多文件编译
724阅读·0评论·1点赞
2022年4月3日
在keil中将文件封装为lib库文件需要注意的地方
1395阅读·0评论·0点赞
2021年11月15日
去首页
看看更多热门内容
评论1
YJer
赞
你好,第6点中提到的,将单独的.h文件合并成一个新的ethernet.h,
㈢ 使用nmake编译Gdal源代码(Win10+VS2022)
为了编译Gdal-master的源码,需要PROJ的支持,而PROJ又需要SQLite的支持。
SQLite、PROJ、Gdal-master的源码及编译可参见网页:
https://www.toutiao.com/a7063703225425199623/?log_from=fe233e3892be3_1644664643652
也可使用nmake在命令行创建(参考网页 https://trac.osgeo.org/gdal/wiki/BuildingOnWindows )
使用命令行,进入VS2022开发者命令行窗口
cd D:ProgramsMicrosoft Visual
D:
vcvars64.bat
cd D:SourceCodesgdal-master
set BINDIR=d:programsgdalgdal-bin
set DATADIR=d:programsgdalgdal-data
set INCDIR=d:programsgdalgdal-include
set LIBDIR=d:programsgdalgdal-lib
修改文件“nmake.opt”的内容:
(1)将
#PROJ_INCLUDE = -Id:install-projlocalinclude
改为
PROJ_INCLUDE = -ID:My3rdPartyinclude
(2)将
#PROJ_LIBRARY = d:install-projlocallibproj_6_0.lib shell32.lib ole32.lib
改为
PROJ_LIBRARY = D:My3rdPartylibproj.lib shell32.lib ole32.lib
依次使用下列命令, 创建x64的Release版本
nmake -f makefile.vc MSVC_VER=1930 WIN64=1
nmake /f makefile.vc install MSVC_VER=1930 WIN64=yes
nmake /f makefile.vc devinstall MSVC_VER=1930 WIN64=yes
执行完毕后,目录“d:programsgdal”中的内容如下(使用命令 “tree /f d:programsgdal” 列出)
D:PROGRAMSGDAL
gdal-bin
gdal303.dll
gdaladdo.exe
gdalbuildvrt.exe
gdaldem.exe
gdalenhance.exe
gdalinfo.exe
gdallocationinfo.exe
gdalmanage.exe
gdalmdiminfo.exe
gdalmdimtranslate.exe
gdalsrsinfo.exe
gdaltindex.exe
gdaltransform.exe
gdalwarp.exe
gdal_contour.exe
gdal_create.exe
gdal_grid.exe
gdal_rasterize.exe
gdal_translate.exe
gdal_viewshed.exe
gnmanalyse.exe
gnmmanage.exe
nearblack.exe
ogr2ogr.exe
ogrinfo.exe
ogrlineref.exe
ogrtindex.exe
gdalplugins
drivers.ini
gdal-data
bag_template.xml
cubewerx_extra.wkt
default.rsc
ecw_cs.wkt
eedaconf.json
epsg.wkt
esri_StatePlane_extra.wkt
gdalicon.png
GDALLogoBW.svg
GDALLogoColor.svg
GDALLogoGS.svg
gdalmdiminfo_output.schema.json
gdalvrt.xsd
gmlasconf.xml
gmlasconf.xsd
gml_registry.xml
grib2_center.csv
grib2_process.csv
grib2_subcenter.csv
grib2_table_4_2_0_0.csv
grib2_table_4_2_0_1.csv
grib2_table_4_2_0_13.csv
grib2_table_4_2_0_14.csv
grib2_table_4_2_0_15.csv
grib2_table_4_2_0_16.csv
grib2_table_4_2_0_17.csv
grib2_table_4_2_0_18.csv
grib2_table_4_2_0_19.csv
grib2_table_4_2_0_190.csv
grib2_table_4_2_0_191.csv
grib2_table_4_2_0_2.csv
grib2_table_4_2_0_20.csv
grib2_table_4_2_0_3.csv
grib2_table_4_2_0_4.csv
grib2_table_4_2_0_5.csv
grib2_table_4_2_0_6.csv
grib2_table_4_2_0_7.csv
grib2_table_4_2_10_0.csv
grib2_table_4_2_10_1.csv
grib2_table_4_2_10_191.csv
grib2_table_4_2_10_2.csv
grib2_table_4_2_10_3.csv
grib2_table_4_2_10_4.csv
grib2_table_4_2_1_0.csv
grib2_table_4_2_1_1.csv
grib2_table_4_2_1_2.csv
grib2_table_4_2_20_0.csv
grib2_table_4_2_20_1.csv
grib2_table_4_2_20_2.csv
grib2_table_4_2_2_0.csv
grib2_table_4_2_2_3.csv
grib2_table_4_2_2_4.csv
grib2_table_4_2_2_5.csv
grib2_table_4_2_3_0.csv
grib2_table_4_2_3_1.csv
grib2_table_4_2_3_2.csv
grib2_table_4_2_3_3.csv
grib2_table_4_2_3_4.csv
grib2_table_4_2_3_5.csv
grib2_table_4_2_3_6.csv
grib2_table_4_2_4_0.csv
grib2_table_4_2_4_1.csv
grib2_table_4_2_4_10.csv
grib2_table_4_2_4_2.csv
grib2_table_4_2_4_3.csv
grib2_table_4_2_4_4.csv
grib2_table_4_2_4_5.csv
grib2_table_4_2_4_6.csv
grib2_table_4_2_4_7.csv
grib2_table_4_2_4_8.csv
grib2_table_4_2_4_9.csv
grib2_table_4_2_local_Canada.csv
grib2_table_4_2_local_HPC.csv
grib2_table_4_2_local_index.csv
grib2_table_4_2_local_MRMS.csv
grib2_table_4_2_local_NCEP.csv
grib2_table_4_2_local_NDFD.csv
grib2_table_4_5.csv
grib2_table_versions.csv
gt_datum.csv
gt_ellips.csv
header.dxf
inspire_cp_BasicPropertyUnit.gfs
inspire_cp_CadastralBoundary.gfs
inspire_cp_CadastralParcel.gfs
inspire_cp_CadastralZoning.gfs
jpfgdgml_AdmArea.gfs
jpfgdgml_AdmBdry.gfs
jpfgdgml_AdmPt.gfs
jpfgdgml_BldA.gfs
jpfgdgml_BldL.gfs
jpfgdgml_Cntr.gfs
jpfgdgml_CommBdry.gfs
jpfgdgml_CommPt.gfs
jpfgdgml_Cstline.gfs
jpfgdgml_ElevPt.gfs
jpfgdgml_GCP.gfs
jpfgdgml_LeveeEdge.gfs
jpfgdgml_RailCL.gfs
jpfgdgml_RdArea.gfs
jpfgdgml_RdASL.gfs
jpfgdgml_RdCompt.gfs
jpfgdgml_RdEdg.gfs
jpfgdgml_RdMgtBdry.gfs
jpfgdgml_RdSgmtA.gfs
jpfgdgml_RvrMgtBdry.gfs
jpfgdgml_SBAPt.gfs
jpfgdgml_SBArea.gfs
jpfgdgml_SBBdry.gfs
jpfgdgml_WA.gfs
jpfgdgml_WL.gfs
jpfgdgml_WStrA.gfs
jpfgdgml_WStrL.gfs
LICENSE.TXT
netcdf_config.xsd
nitf_spec.xml
nitf_spec.xsd
ogrvrt.xsd
osmconf.ini
ozi_datum.csv
ozi_ellips.csv
pci_datum.txt
pci_ellips.txt
pdfcomposition.xsd
pds4_template.xml
plscenesconf.json
ruian_vf_ob_v1.gfs
ruian_vf_st_uvoh_v1.gfs
ruian_vf_st_v1.gfs
ruian_vf_v1.gfs
s57agencies.csv
s57attributes.csv
s57expectedinput.csv
s57objectclasses.csv
seed_2d.dgn
seed_3d.dgn
stateplane.csv
template_tiles.mapml
tms_LINZAntarticaMapTileGrid.json
tms_MapML_APSTILE.json
tms_MapML_CBMTILE.json
tms_NZTM2000.json
trailer.dxf
vdv452.xml
vdv452.xsd
vicar.json
gdal-include
armadillo_headers.h
cplkeywordparser.h
cpl_alibaba_oss.h
cpl_atomic_ops.h
cpl_auto_close.h
cpl_aws.h
cpl_azure.h
cpl_compressor.h
cpl_config.h
cpl_config_extras.h
cpl_conv.h
cpl_cpu_features.h
cpl_csv.h
cpl_curl_priv.h
cpl_error.h
cpl_error_internal.h
cpl_float.h
cpl_google_cloud.h
cpl_hash_set.h
cpl_http.h
cpl_json.h
cpl_json_header.h
cpl_json_streaming_parser.h
cpl_json_streaming_writer.h
cpl_list.h
cpl_md5.h
cpl_mem_cache.h
cpl_minixml.h
cpl_minizip_ioapi.h
cpl_minizip_unzip.h
cpl_minizip_zip.h
cpl_multiproc.h
cpl_odbc.h
cpl_port.h
cpl_progress.h
cpl_quad_tree.h
cpl_sha1.h
cpl_sha256.h
cpl_spawn.h
cpl_string.h
cpl_swift.h
cpl_time.h
cpl_userfaultfd.h
cpl_vax.h
cpl_virtualmem.h
cpl_vsi.h
cpl_vsil_curl_class.h
cpl_vsil_curl_priv.h
cpl_vsil_plugin.h
cpl_vsi_error.h
cpl_vsi_virtual.h
cpl_worker_thread_pool.h
cpl_zlib_header.h
gdal.h
gdalexif.h
gdalgeorefpamdataset.h
gdalgrid.h
gdalgrid_priv.h
gdaljp2abstractdataset.h
gdaljp2metadata.h
gdaljp2metadatagenerator.h
gdallinearsystem.h
gdalpansharpen.h
gdalpython.h
gdalsse_priv.h
gdalwarper.h
gdalwarpkernel_opencl.h
gdal_alg.h
gdal_alg_priv.h
gdal_csv.h
gdal_frmts.h
gdal_mdreader.h
gdal_pam.h
gdal_priv.h
gdal_proxy.h
gdal_rat.h
gdal_simplesurf.h
gdal_thread_pool.h
gdal_utils.h
gdal_version.h
gdal_vrt.h
gnm.h
gnmgraph.h
gnm_api.h
gvgcpfit.h
internal_qhull_headers.h
memdataset.h
nasakeywordhandler.h
ograpispy.h
ogrgeomediageometry.h
ogrpgeogeometry.h
ogrsf_frmts.h
ogr_api.h
ogr_attrind.h
ogr_core.h
ogr_expat.h
ogr_feature.h
ogr_featurestyle.h
ogr_geocoding.h
ogr_geometry.h
ogr_geos.h
ogr_geo_utils.h
ogr_libs.h
ogr_p.h
ogr_proj_p.h
ogr_sfcgal.h
ogr_spatialref.h
ogr_srs_api.h
ogr_srs_esri_names.h
ogr_swq.h
ogr_xerces.h
ogr_xerces_headers.h
rawdataset.h
thinplatespline.h
vrtdataset.h
gdal-lib
gdal_i.lib
㈣ 如何从php程序读取pdf文档中的文本信息
PHP程序pdf格式文件函数库
本函数库共有65个函数
PDF是Adobe所发展的可携式文件格式,它的文件可以在网络上传输、浏览,甚至使用印表机印出,或使用其它输出装置输出,都可以保存原来的文字及图片的编排。详细的信息可以参考 Adobe 的网站。参考其中有关 PDF 或 Acrobat 的部份。
在 UNIX 系统中,可以使用 Thomas Merz 开发的 PDF 函数库。将它编译安装完成后,再编译 PHP 程序方可供 PHP 使用 pdflib。编译时可能要 JPEG library 及 TIFF library。
除了用这个函数库可以建立 PDF 文件外,FastIO 公司发展的产品 ClibPDF 也可以处理 PDF 文件。
以下为处理 PDF 文件的范例,本例对 test.pdf 加工后等待用户读取。
<?php
$fp = fopen("test.pdf", "w");
$pdf = PDF_open($fp);
pdf_set_info_author($pdf, "Uwe Steinmann");
PDF_set_info_title($pdf, "Test for PHP wrapper of PDFlib 2.0");
PDF_set_info_author($pdf, "Name of Author");
pdf_set_info_creator($pdf, "See Author");
pdf_set_info_subject($pdf, "Testing");
PDF_begin_page($pdf, 595, 842);
PDF_add_outline($pdf, "Page 1");
pdf_set_font($pdf, "Times-Roman", 30, 4);
pdf_set_text_rendering($pdf, 1);
PDF_show_xy($pdf, "Times Roman outlined", 50, 750);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
PDF_end_page($pdf);
PDF_close($pdf);
fclose($fp);
echo "<A HREF=getpdf.php3>finished</A>";
?>
上例中的 gettest.php3 可能像下面的样子
<?php
$fp = fopen("test.pdf", "r");
header("Content-type: application/pdf");
fpassthru($fp);
fclose($fp);
?>
PDF_get_info: 返回文件信息。
PDF_set_info_creator: 配置建档者字符串。
PDF_set_info_title: 配置文件标题。
PDF_set_info_subject: 配置文件主题。
PDF_set_info_keywords: 配置文件的关键字。
PDF_set_info_author: 配置文件作者。
PDF_open: 建立新的 PDF 档。
PDF_close: 关闭 PDF 档。
PDF_begin_page: 启始 PDF 文件页面。
PDF_end_page: 关闭 PDF 文件页面。
PDF_show: 输出字符串到 PDF 文件。
PDF_show_xy: 输出字符串到指定坐标。
PDF_set_font: 配置使用的字型及大小。
PDF_set_leading: 配置行距。
PDF_set_text_rendering: 配置文字表现方式。
PDF_set_horiz_scaling: 配置文字水平间距。
PDF_set_text_rise: 配置文字高度。
PDF_set_text_matrix: 配置文字矩阵。
PDF_set_text_pos: 配置文字位置。
PDF_set_char_spacing: 配置字符间距。
PDF_set_word_spacing: 配置字间距。
PDF_continue_text: 输出文字。
PDF_stringwidth: 计算字符串的宽度。
PDF_save: 储存环境变量。
PDF_restore: 还原环境变量。
PDF_translate: 移动原点。
PDF_scale: 缩放类。
PDF_rotate: 旋转类。
PDF_setflat: 配置平滑值。
PDF_setlinejoin: 配置连接参数。
PDF_setlinecap: 配置 linecap 参数。
PDF_setmiterlimit: 配置斜边界限。
PDF_setlinewidth: 配置线宽。
PDF_setdash: 配置虚线样式。
PDF_moveto: 配置处理的坐标点。
PDF_curveto: 绘贝氏曲线。
PDF_lineto: 绘直线。
PDF_circle: 绘圆。
PDF_arc: 绘弧。
PDF_rect: 绘长方形。
PDF_closepath: 形成封闭的向量形状。
PDF_stroke: 沿向量绘线。
PDF_closepath_stroke: 形成封闭的向量形状并沿向量绘线。
PDF_fill: 填满目前的向量。
PDF_fill_stroke: 填满目前的向量并沿向量绘线。
PDF_closepath_fill_stroke: 形成封闭的向量形状沿向量绘线并填满。
PDF_endpath: 关闭目前向量。
PDF_clip: 组合所有向量。
PDF_setgray_fill: 指定填入的颜色为灰阶。
PDF_setgray_stroke: 指定绘图的颜色为灰阶。
PDF_setgray: 指定绘图的颜色为灰阶并填入。
PDF_setrgbcolor_fill: 指定填入的颜色为彩色。
PDF_setrgbcolor_stroke: 指定绘图的颜色为彩色。
PDF_setrgbcolor: 指定绘图的颜色为彩色并填入。
PDF_add_outline: 目前页面加入书签。
PDF_set_transition: 配置页的转换。
PDF_set_ration: 配置二页的切换时间。
PDF_open_gif: 打开 GIF 图档。
PDF_open_memory_image: 打开内存图档。
PDF_open_jpeg: 打开 JPEG 图档。
PDF_close_image: 关闭图档。
PDF_place_image: 放置图片到 PDF 档指定位置。
PDF_put_image: 放置图片到 PDF 档。
PDF_execute_image: 放置 PDF 档中图片到指定位置。
PDF_add_annotation: 加入注释。
㈤ qt5编写pdf阅读器,怎么编译poppler
一般分为动态库和静态库,方法分别如下: 一. 静态库的生成 1. 测试目录: lib 2. 源码文件名: mywindow.h, mywindow.cpp 3. 编写项目文件: mywindow.pro 注意两点: TEMPLATE = lib CONFIG += staticlib 4. 生成Makefile: qmake mywindow.pro 5
㈥ linux下如何安装软件
具体操作步骤如下。
1、打开系统,找到软件中心,打开软件中心。如下图所示。