编译FileZilla的libfilezilla组件:GnuTLS问题求助
FileZilla编译问题:GnuTLS检测失败与汇编错误解决
问题场景
按照《Windows下编译FileZilla 3》官方文档推进到libfilezilla编译环节,执行以下命令时:
cd ~ svn co https://svn.filezilla-project.org/svn/libfilezilla/trunk libfilezilla cd libfilezilla autoreconf -i ./configure --prefix="$HOME/prefix" --enable-shared --disable-static make && make install
configure报错:
configure: error: GnuTLS 3.7.0 or greater was not found. You can get it from https://gnutls.org/
即使已按文档安装GnuTLS仍无法检测到;重新编译GnuTLS时,出现大量汇编错误:
coff/aesni-x86_64.s:3508: Error: `leaq' is only supported in 64-bit mode coff/aesni-x86_64.s:3510: Error: bad register name `%rax)' ...
解决步骤
1. 修复libfilezilla找不到GnuTLS的问题
- 统一安装路径:编译GnuTLS时必须指定与libfilezilla相同的
--prefix,确保所有依赖文件集中到同一目录:# 进入GnuTLS源码目录后执行 ./configure --prefix="$HOME/prefix" make && make install - 配置环境变量:让libfilezilla的configure能识别到GnuTLS的头文件和库,执行libfilezilla的configure前先运行:
export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig:$PKG_CONFIG_PATH" export LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH" export C_INCLUDE_PATH="$HOME/prefix/include:$C_INCLUDE_PATH" export CXX_INCLUDE_PATH="$HOME/prefix/include:$CXX_INCLUDE_PATH" - 重新执行libfilezilla的configure命令。
2. 修复GnuTLS编译时的汇编错误
这些错误是因为编译环境在32位模式下尝试编译64位汇编代码,需强制指定64位编译:
- 设置编译工具链的64位模式:
export CC="gcc -m64" export CXX="g++ -m64" - 指定64位目标平台:重新配置GnuTLS时添加平台参数(以MinGW-w64环境为例):
./configure --prefix="$HOME/prefix" --build=x86_64-w64-mingw32 - 检查工具链版本:确保你使用的是64位编译工具(如mingw-w64-x86_64系列),而非32位的mingw32工具。
内容的提问来源于stack exchange,提问作者HerrimanCoder
相关产品推荐
相关产品推荐

