gpg编译花了挺多时间:这里总结下遇到的问题
环境:vmware 虚拟机,跑的centos linux 64位的
官网最新gnupg的代码下载下来,开始编译
1.执行autogen.sh
提示需要安装下面3个东东才能使用autogen.sh
autoconf-latest.tar
automake-1.15.tar
gettext-latest.tar
全部安装一遍才能生成我们的configure(不是直接./configure,,,后面再说)
2.执行./configure,,,提示安装下面两个库
sqlite先要装下,3.7以上的
gnutls-3.4.9.tar这个库又没有,装,,,装
3.下载gnutls这个库编译安装的时候遇到一堆问题
需要装下下面3个库
a. libtasn1-4.8
b. nettle-3.2
c. yum -y install unbound (安装下)
d. p11-kit ---------->libffi (这玩意不知道干什么的,去掉)
所以最后是./ configure --without-p11-kit 执行下
e.
这个过程中又有新的问题出现:关于.pc文件的问题
因为configure里面会用用到pkg-config
pkg-config必须知道到哪去找.pc的库的问题
pkg_config_path:环境变量PKG_CONFIG_PATH是用来设置.pc文件的搜索路径的,pkg-config按照设置路径的先后顺序进行搜索,直到找到指定的.pc 文件为止。这样,库的头文件的搜索路径的设置实际上就变成了对.pc文件搜索路径的设置。
1.编译好的库先 find ./ -name "*pc",,,找到pc文件,再拷贝到pkgconfig目录里面去
2.cp B.pc /usr/lib64/pkgconfig/
因为我的系统是64位的,所以需要把把包含.pc的东西都都拷贝下
4.兄弟可没这么容易就完了,,,还有了头疼的了,而且网上资料比较难查到
syntax error near unexpected token
PKG_CHECK_MODULES(
这个错误也是奇葩,,,,安装完sqllite
这个错误也是奇葩,,,,安装完sqllite和gnutls,,还报这个错误
最后找到了解决办法:
The PKG_CHECK_MODULES
macro doesn't seem to be expanded properly. When you installed pkg-config
, did it install pkg.m4
(in somewhere like /usr/share/aclocal
)? If so, try running aclocal
again (maybe with -I m4
, if you've got custom m4
code in the m4
subdirectory) and then run autoconf
.
If that doesn't work and pkg.m4
was installed, try running autoreconf -f
(and maybe autoreconf -i -f
).
If that doesn't work, you'll need to copy pkg.m4
to a directory for your package. Usually this is the m4
subdirectory. Set ACLOCAL_AMFLAGS = -I m4
(or ACLOCAL_AMFLAGS = -I m4 --install
) in Makefile.am
(if you're using automake
), and AC_CONFIG_MACRO_DIR([m4])
in configure.ac
. Then run aclocal -I m4
and autoconf
and ./configure
.
最后我是把pkg.m4这个文件拷贝到m4文件夹下,后面就没报错误了(这里的提示我基本都弄了一遍)
5.继续
后面又提示需要gpg相关的几个依赖库,去官网上都下载下来编译安装下
编译 ibgcrypt时候
a.,,,不小心libgpg-error这个库下了一个低版本的,怎么都编译不过,最后发现原来是版本问题
b. --disable-amd64-as-feature-detection, configure 还有加上这个才行,,,不然提示奇怪的amd64函数不在库中不能找到
6.好了所有的库都准备好了,
直接./configure吧,,
,还是报错,,,,,这回是因为没有按照之前autogen.sh的提示,,,./configure后面还有些东西,,只要按照autogen.sh的提示后面加上必要的选项就好了
7../configure 完成,makefile文件终于成功产生:
make 一下
a. 又有错误:源代码里面有个doc文件夹,,,里面有个makefile,,,make进入到这里的时候卡住了,少了几个png,gif文件,,哎,随便伪造了几个需要的文件
反正也是doc文件夹下的,应该对功能没什么大影响;
b. txteinfo库 这是最后一个库,,安装下
。。。。。。。。。。。。。。baby。。。。。。。。。。。一切ok。。。。。。。。。。。。终于编译完成,,测试了下生成gpg的功能可以产生秘钥对了
总结:死磕到底,前后弄了好几天