源 tarball 中的 README 文件可在 http://lttng.org/download 上获得似乎假设一个人正在同一个 Linux 系统上构建,该系统将成为跟踪的目标。我找到了其他资源来解释如何做到这一点(LTTng Project YouTube channel 有非常好的截屏视频),但我找不到任何关于如何交叉编译 LTTng 的说明(具体来说,我猜是 liburcu、LTTng-UST、 LTTng-tools 和 LTTng-modules),并将其全部安装在嵌入式 Linux 系统上(我可以在其中构建或重建内核,使用设备树 blob 和 - 目前 - 基于 ramdisk 的文件系统)。

我在哪里可以找到有关如何执行此操作的详细信息?

更新:作为Marko在下面的第一条评论中指出,LTTng 工具是使用 autoconf 构建的。我从理论上理解,我可以为 configure 找出一个“--host”选项,类似于 this answer .也许我需要一个像“ARCH=arm”这样的参数来make,就像我在构建内核时使用的那样。但是,在将要使用它们的同一台机器上构建 LTTng 组件时,使用的 make install 的交叉编译等效项是什么?

请您参考如下方法:

LTTng 2.x 不再需要修补内核。您需要加载内核模块 (lttng-modules) 才能进行内核跟踪。支持的最低 Linux 内核版本是 2.6.38。 您可以低至 2.6.32,但您需要根据 LTTng 2.1 release note 将 3 个补丁应用到您的内核。和 lttng-modules README .

为了回答您的交叉编译问题,这是我用来交叉编译 LTTng 工具链(用于用户空间跟踪)的常用过程:

export HOST=<your host triplet (e.g. arm-linux-gnueabi)> 
 
# Make sure your cross-compiler can be found in your $PATH 
export SYSROOT=<path to the target sysroot> 
 
export CFLAGS="--sysroot=$SYSROOT" 
export CPPFLAGS="-I$SYSROOT/include" 
export CXXFLAGS=$CFLAGS 
export LDFLAGS="--sysroot=$SYSROOT -L$SYSROOT/usr/lib -L$SYSROOT/lib" 
 
# Fix RPL_MALLOC issue. See [Autoconf and RPL_MALLOC][3] for more details. 
export ac_cv_func_malloc_0_nonnull=yes 
 
# Cross compile userspace-rcu. You can also use a source tarball. 
git clone git://git.lttng.org/userspace-rcu.git 
cd userspace-rcu 
./bootstrap 
./configure --prefix=$SYSROOT --host=$HOST --with-sysroot=$SYSROOT 
make 
make install 
 
# Cross compile lttng-ust. You can also use a source tarball. 
git clone git://git.lttng.org/lttng-ust.git 
cd lttng-ust 
./bootstrap 
./configure --prefix=$SYSROOT --host=$HOST --with-sysroot=$SYSROOT 
make 
make install 
 
# Cross compile lttng-tools. You can also use a source tarball. 
git clone git://git.lttng.org/lttng-tools.git 
cd lttng-tools 
./bootstrap 
./configure --prefix=$SYSROOT --host=$HOST --with-sysroot=$SYSROOT 
make 
make install 

您应该能够使其适应您的平台。如果要进行内核跟踪,还需要以类似的方式交叉编译 lttng-modules。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!