Dar*_*zer 2 trace cross-compiling embedded-linux lttng
http://lttng.org/download上提供的源代码压缩包中的README文件似乎假设一个构建在同一个Linux系统上,该系统将成为跟踪的目标.我找到了解释如何执行此操作的其他资源(LTTng Project YouTube频道有非常好的截屏视频),但我找不到任何关于如何交叉编译LTTng的说明(具体来说,我猜,liburcu,LTTng-UST ,LTTng-tools和LTTng-modules),并将它们全部安装在嵌入式Linux系统上(我可以在其中构建或重建内核,使用设备树blob,现在是基于ramdisk的文件系统).
我在哪里可以找到有关如何操作的详细信息?
更新:正如Marko在下面的第一条评论中指出的那样,LTTng工具是使用构建的autoconf
.理论上我理解我可以找到一个"--host"选项configure
,类似于这个答案.也许我需要一个像"ARCH = arm" make
这样的参数,就像我在构建内核时使用的那样.但是make install
,在使用它们的同一台机器上构建LTTng组件时,使用的交叉编译等效是什么?
小智 5
LTTng 2.x不再需要修补内核.您需要加载内核模块(lttng-modules)才能进行内核跟踪.支持的最低Linux内核版本是2.6.38.您可以低至2.6.32但是您需要根据LTTng 2.1发行说明和lttng-modules自述文件对内核应用3个补丁.
要响应您的交叉编译问题,这是我用来交叉编译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
Run Code Online (Sandbox Code Playgroud)
您应该能够适应您的平台.如果要进行内核跟踪,还需要以类似的方式交叉编译lttng-modules.