梅森交叉编译依赖关系



您好,我试图交叉编译Systemd for Arm,但我被卡在'Mount'交叉降低上。

我设法从util-linux交叉编译libmount,但无法弄清楚在哪里或如何指定梅森应该在哪里寻找它。

有一个"坐骑"选项,但是即使提供它,它仍然说:

Meson encountered an error in file meson.build, line 797, column 0:                                                    
Cross dependency 'mount' not found

我的交叉编译文件看起来像这样:

[binaries]                   
c = '/usr/bin/arm-linux-gnueabi-gcc'                       
cpp = '/usr/bin/arm-linux-gnueabi-g++'                     
ar = '/usr/arm-linux-gnueabi/bin/ar'                       
strip = '/usr/arm-linux-gnueabi/bin/strip'                 
pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'        
[host_machine]               
system = 'linux'             
cpu_family = 'arm'           
cpu = 'cortex-m4'            
endian = 'little'            
[build_machine]              
system = 'linux'             
cpu_family = 'x86_64'        
cpu = 'i686'                 
endian = 'little' 

顺便说一句,如果您知道没有这种荒谬(恕我直言(设置的另一种方法使SystemD掌握了SystemD,那就太好了。

谢谢。

Meson使用 pkg-config 工具来查找依赖关系。此工具搜索所谓的 package配置文件使用 pkg_config_path 环境变量。您可以检查没有 sount in:

$ pkg-config --list-all

这很自然,因为您刚刚编译但未提供要找到的包装配置文件 mount.pc 。检查libmount源,它应包含安装过程使用的mote.pc.in。在交叉编译案件中,应根据指南手动将其转换为MANT.PC。

创建软件包配置文件后,您应该能够成功运行:

$ pkg-config --validate mount

您还可以检查变量的有效性:

$ pkg-config --cflags mount
-I/home/<>/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/libmount -I/home/<>/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/blkid -I/home/<>/tmp/work/cortexa9hf-neon-poky-linux-gnueabi/uuid
$ pkg-config --libs mount  
-lmount

btw,这是我有:

prefix=/usr
exec_prefix=/usr
libdir=/usr/lib
includedir=/usr/include
Name: mount
Description: mount library
Version: 2.29.1
Requires.private: blkid
Cflags: -I${includedir}/libmount
Libs: -L${libdir} -lmount

顺便说一句 荒谬的(恕我直言(设置会很好。

SystemD切换到Meson,因此现在仅此而已,除非您想使用Autotools构建旧版本。

但是,考虑到更广泛的想法,您还可以看一下Yocto,该Yocto专注于简化进行交叉编译的Linux发行版。


update

,@yasushi shoji正确指出,对于交叉补偿案例, pkg_config_libdir 应该使用,因为它可以防止本地系统包的不良/错误使用,请检查此。

检查。

相关内容

  • 没有找到相关文章

最新更新