还剩5页未读,继续阅读
文本内容:
configure配置安装详解xL*kL**sL**1*;L*vt*k!Jk!xt*vL*v!xl*xl**A**A*kL*kL*k!^Tx#Tx^TszTxxrxxtxx7xzx*tx*rxxtxzT^ztsztxxTxzp*xp*X7XztxzT%ZjszT%xTxzTxztxztxztxxTszTszp*zp%zp%*Tx#TszTxzT%zTs✓vxTsTx#txzTsxTxz7%zTxzTsZTSZTSZT%ZTSZTXZjSXTXXTXXTSxT*Z|X✓Tx✓TxXTXZT%ZTSZTSZT%✓TxTxxTxTxXJXXgXXTSXTXXTSTxZ7xZ7x欢迎访问我的博客http://blog.csdn.net/u010977122/article/details/52959098slzslz%Izslz%lzslzslz^lzslzxlzslzslzslzsl^%lzslz^Zxlz^1*slzslzxlz*^Z*^ZxixxTxzixxlxT*Jxxrxxrxxlx*TxTxTx^rx^tx^tx^txxi^*Tx*txtTxzt*T*xt^xt^^txxTxTxxtsxtsxt^xTxxixxTxTxxt^*txxtx^Txxi^xt#thzTxjxxr*xr^xrxxTxTx7#rx#rxxTxxrvxTxxlxx7^^tx^txxt^由于最近项目需要在HMI层生成二维码,所以去网上找了第三方开源库可是下载下来里面都是源码,没有动态库或者静态库,所以就需要自己去编译生成源码库中只有一个configure的可运行得配置脚本,之前用过,没有详细了解,今天去网上查阅资料,以下是整理的一些心得笔记首先让我们先来了解一下configure这个文件的作用Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后再安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用configure它是个shell脚本,主要用于编译安装源代码库和软件./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,比如加上-with、-enable、-without-disable等等参数对编译加以控制,检查当前的环境是否满足要安装软件的依赖关系,比如它会检测你是不是有CC或GCC并不是需要CC或GCC生成makefile文件,以便你可以用make和makeinstall来编译和安装程序,最后运行makeclean删除一些临时文件首先我们可以使用./configure-help就可以查看到所有的配置选项下面我们对一些重要的常见的进行介绍Defaultsfortheoptionsarespecifiedinbrackets.Configuration:-h--helpdisplaythishelpandexit一一help=shortdisplayoptionsspecifictothispackagedisplaytheshorthelpofalltheincludeddisplayversioninformationandexitdonotprintchecking・・・messagescachetestresultsinFILE[disabled]aliasfor--cache-file=config.cachedonotcreateoutputfilesfindthesourcesinDIR[configurediror・]Installationdirectories:一prefix=PREFIXinstallarchitecture-independentfilesinPREFIX[/usr/local]--exec-prefix=EPREFIXinstallarchitecture-dependentfilesinEPREFIX[PREFIX]BydefaultmakeinstalTwillinstallallthefilesin/usr/local/bin,/usr/local/lib,etc.Youcanspecifyaninstallationprefixotherthan/usr/localusing--prefix’forinstance-一prefix=$II0ME
5.Forbettercontrolusetheoptionsbelow.Finetuningoftheinstallationdirectories:userexecutables[EPREFIX/bin]systemadminexecutables[EPREFIX/sbin]programexecutables[EPREFIX/1ibexec]read-onlysingle-machinedata[PREFIX/etc]modifiablearchitecture-independentdatamodifiablesingle-machinedata[PREFIX/var]objectcodelibraries[EPREFIX/lib]Cheaderfiles[PREFIX/include]Cheaderfilesfornon-gcc[/usr/include]read-onlyarch-independentdatarootread-onlyarchitecture-independentdatainfodocumentation[DATAROOTDIR/info]locale-dependentdata[DATAROOTDIR/locale]mandocumentation[DATAROOTDIR/man]documentationroot一disable-silent-rulesverbosebuildoutputundo:makeV=0〃一一enable-static[二PKGS]buildstaticlibraries[default=no]一enable-dependency-trackingdonotrejectslowdependencyextractors——disable-dependency-trackingspeedsupone-timebuild一enable-shared[=PKGS]buildsharedlibraries[default=yes]一一enable-fast-install[=PKGS]optimizeforfastinstallation[default=yes]avoidlockingmightbreakparallelbuildsmakethelibrarythread-safe.[default=yes]DonottrytocompileandrunatestSDLprogramdonothardcoderuntimelibrarypathsgenerateextracodetowriteprofilesuitableforgprof[default=no]generateextracodetowritecoveragesuitableforgcov[default=no]generateextracodetocheckmemoryleaks[default二no]usePACKAGE[ARG=yes]donotusePACKAGEsameas-with-PACKAGE二notrytouseonlyPIC/non-PICobjectsboth]assumetheCcompilerusesGNUId[default=no]orthecompiler,ssysrootifnotspecified.buildutilitytools[default=yes]buildtests[default=no]一一with-sdl-prefix=PFXPrefixwhereSDLisinstalledoptional一with-sdl-exec-prefix=PFXExecprefixwhereSDLisinstalledoptionalassumetheCcompilerusesGNUId[default=no]--with-libiconv-prefix[=DIR]searchforlibiconvinDIR/includeandDIR/lib--without-libiconv-prefixdon,tsearchforlibiconvinincludedirandlibdirSomeinfluentialenvironmentvariables:CCCcompilercommandCFLAGSCcompilerflagsLDFLAGSlinkerflagse.g.-Llibdirifyouhavelibrariesinanonstandarddirectorylibdirlibrariestopasstothelinkere.g.-llibraryCPPFLAGSObjectiveC/C++preprocessorflagse.g.-KincludediryouhaveheadersinanonstandarddirectoryincludedirCpreprocessorpathtopkg-configutilityPKGCONFIGPATHdirectoriestoaddtopkg-config,ssearchpathPKG_CONFIG_LIBDIRpathoverridingpkg-configJsbuilt-insearchpathpngCFLAGSCcompilerflagsforpngoverridingpkg-configpng_LIBSlinkerflagsforpngoverridingpkg-configUsethesevariablestooverridethechoicesmadebyconfigureortohelpittofindlibrariesandprogramswithnonstandardnames/locations.
1、—host=H0ST指定软件运行的系统平台.如果没有指定将会运行configguess来检测.一host指定的是交叉编译工具链的前缀
2、一build=BUILD指定软件包安装的系统平台,如当前我们是在intel的pentium机器中编译该系统,那么我们的一build就可能是i686-pc-linux-gnu.如果没有指定,默认值将是--host选项的值.--target=GARGET指定软件面向targetto的系统平台.这主要在程序语言工具如编译器和汇编器上下文中起作用.如果没有指定默认将使用‘一host选项的值.一般而言,我们只要指定一host就可以了,在一build和一host不同的时候就被配置文件认定为进行交叉编译,否则就是表示本地编译从这三个参数的含义来看,说明其处理的目标只有在不同平台下表现为不同的时候才有作用而这些文件通常都跟目标平台的指令系统直接或间接关比如可执行文件,对于不同平台下使用的可执行文件的编码可以是完全不同的,因此必须使用对应能处理该编码的程序才能正确处理,而如果错误的使用则可能导致程序错误或者破坏文件,对于这样要处理不同平台下会出现不同编码的软件,我们就应当对它指定目标平台,以免另其错误处理;而对于文本文件,对于不同的平台同样的内容表达的含义都是相同的,因此我们不需要专门针对平台来处理,这样的软件我们就可以不必对它指定需要处理的平台了在交叉编译之后,可以用file***指令,查看生成的文件的类型,如果不对的话,就可以去查看configlog文件,看看有没有找到相应的编译工具链-enable-FEATURE[=ARG]相反的,一些软件包可能提供了一些默认被禁止的特性可以使用‘一enable-FEATURE来起用它.这里FEATURE是特性的名字.一个特性可能会接受一个可选的参数.例如$./configure一一enable—buffers=
1285、enable-FEATURE=no与上面提到的—disable-FEATURE,是同义的.--enable-static生成静态链接库--enable-shared生成动态链接库这两个用来选择生成是静态库还是动态库,但是我配置了无效,具体我也不知道为什么,希望有了解的不吝赐教
6、-with-PACKAGE[=ARG]在自由软件社区里有使用已有软件包和库的优秀传统.当用‘configure来配置一个源码树时可以提供其他已经安装的软件包的信息.例如,倚赖于Tel和Tk的BLT器件工具包.要配置BLT可能需要给configure提供一些关于我们把Tel和Tk装的何处的信息$./configure-with-tcl=/usr/local-with-tk=/usr/local—with-PACKAGE=no与下面将提到的-without-PACKAGE是同义的.
7、-without-PACKAGE有时候你可能不想让你的软件包与系统已有的软件包交互.例如,你可能不想让你的新编译器使用GNUId.通过使用这个选项可以做到这一点$./configure-without-gnu-ld
8、也可以配置它们的环境变量,如spanstyle=z,font-family:SimSun;font-size:14px;,zCCCcompilercommandCFLAGSCcompilerflags/span
9、一prefix=PREFIX-prefix,是最常用的选项.制作出的Makefile会查看随此选项传递的参数当一个包在安装时可以彻底的重新安置他的结构独立部分.举一个例子,当安装一个包,例如说Emacs下面的命令将会使EmacsLispfile被安装到〃/opt/gnu/share”:$./configure-prefix=/opt/gnu
10、-bindir=DIR指定二进制文件的安装位置.这里的二进制文件定义为可以被用户直接执行的程序.11-sbindir=DIR指定超级二进制文件的安装位置.这是一些通常只能由超级用户执行的程序.
12、-libdir=DIR指定库文件的安装位置.
13、--includedir-DIR5指定C头文件的安装位置.其他语言如C++的头文件也可以使用此选项.更为详细的参数的介绍请参考http://blog.csdn.net/winiamwang2013/article/details/8529954http://blogger.org.cn/blog/more.aspname=lhworkid=22496在此之后,就会自动生成Makefile文件,如果要修改编译器环境等,可以这个时候修改生成的Makefile文件,也可以在/configure之前,先source下交叉编译需要的环境变量如果编译的是库文件,就可以把库文件和相应的头文件包含到工程中就可以使用了。
个人认证
优秀文档
获得点赞 0