从源码构建

师成师成· 更新于 2026-09-28· 阅读 3 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

从源代码构建

首先请确认您的系统已满足 Apache Thrift 环境要求 中的全部必要条件。

如果您是首次从源代码仓库进行构建,则需要生成 configure 脚本。(如果您下载的是已发布的 tarball 包,则无需执行此步骤。)在顶层目录下执行:

./bootstrap.sh

configure 脚本生成之后,就可以对 thrift 进行配置了。在顶层目录中执行:

./configure

禁用某种语言:

./configure --without-java

你可能需要明确指定 boost 文件的位置。如果将 boost 安装在 /usr/local 下,可以按如下方式运行 configure:

./configure --with-boost=/usr/local

如果要覆盖 Java SDK 的检测逻辑,请使用 JAVAC 环境变量:

./configure JAVAC=/usb/bin/javac

注意,默认情况下 thrift 的 C++ 库通常会包含调试符号一起构建。如果你想自定义这些选项,应该在 configure 中使用 CXXFLAGS 选项,格式如下:

./configure CXXFLAGS='-g -O2'
./configure CFLAGS='-g -O2'
./configure CPPFLAGS='-DDEBUG_MY_FEATURE'

要查看其他配置选项,请运行

./configure --help

运行完 configure 后,即可通过 make 构建 Thrift:

make

并运行测试套件:

make check

以及跨语言测试套件:

python3 test/test.py

编译过程中遇到的问题

  • “compiler/cpp/thriftl.cc:2190: undefined reference to `yywrap’”

你需要安装 Flex 库(另请参阅 Apache Thrift 依赖要求),然后重新运行配置脚本。

  • 在构建 Thrift 运行时库时出现 “mv: cannot stat “‘.deps/TBinaryProtocol.Tpo’: No such file or directory””

重新运行 configure

--enable-libtool-lock

或者通过关闭并行 make 来实现,方法是在 lib/cpp/Makefile 中加入 .NOTPARALLEL:,亦或

make -j 1

尽管 Thrift 编译器的构建看起来可以在不使用 libtool 锁的情况下与并行 make 兼容,但 Thrift 运行时库的构建并非如此。

安装

进入顶层目录,切换为超级用户,然后执行:

make install

请注意,部分语言包需要使用更适合这些语言的构建工具手动安装(适用于 Java、Ruby、PHP)。

有关各语言库包安装的详细信息,请查阅 lib/<语言>/ 目录下的 README 文件。


评论

登录后参与评论

正在加载评论…