交叉编译 systemd(to be continued)

其实需要先编译好好多用的库,比如 attr, caps等,然后才能开始编 systemd.这些细节以后补上。

开始编 systemd的时候,先指定 CFLAGS, LDFLAGS:

export LDFLAGS="-L/home/charles/code/build_systemd/_install/lib -lattr"

export CFLAGS="-I/home/charles/code/build_systemd/_install/include"

然后,执行 configure:

./configure --host=arm-linux-gnueabi  --prefix=/home/charles/code/build_systemd/_install

最后还是有错:

 CCLD     test-bus-marshal
/toolchain/armv7-gcc-6.3/bin/../lib/gcc/arm-linux-gnueabi/6.3.0/../../../../arm-linux-gnueabi/bin/ld: cannot find -ldbus-1
collect2: error: ld returned 1 exit status
Makefile:13722: recipe for target 'test-bus-marshal' failed
make[2]: *** [test-bus-marshal] Error 1
Makefile:22641: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
Makefile:10161: recipe for target 'all' failed
make: *** [all] Error 2

还需要编 dbus..


编完dbus后基本上就没问题了。

最后使用的configure配置为:

./configure --host=arm-linux-gnueabi     --prefix=/home/charles/code/build_systemd/_install/usr --exec-prefix=/home/charles/code/build_systemd/_install/usr  --disable-xkbcommon CFLAGS="-I/home/charles/code/build_systemd/_install/include" LDFLAGS="-L/home/charles/code/build_systemd/_install/lib -lattr"

然后,还需要修改makefile文件,不然,安装的时候,有些文件会被安装到系统目录下。。

rootprefix = /home/charles/code/build_systemd/_install/usr
bashcompletiondir = /home/charles/code/build_systemd/_install/usr/share/bash-completion/completions
SYSTEM_SYSVINIT_PATH = /home/charles/code/build_systemd/_install/etc/init.d
SYSTEM_SYSVRCND_PATH = /home/charles/code/build_systemd/_install/etc/rc.d
其实上面有些路径也可以在上面的configure里面指定的。。

--with-sysvinit-path

--with-sysvrcnd-path

--with-bashcompletiondir


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 ARM 系统上进行交叉编译并安装 `systemctl`,你需要设置交叉编译环境并编译 systemd。 以下是一个大致的步骤: 1. 首先,确保你的开发机器上已经安装了交叉编译工具链,可以根据你的目标 ARM 系统选择合适的工具链。 2. 获取 systemd 的源代码。你可以从 systemd 的官方网站(https://github.com/systemd/systemd)下载最新的稳定版本,也可以使用你的发行版提供的软件包。 3. 解压源代码,并进入源代码目录。 4. 设置交叉编译环境变量,包括 `CC`、`CXX`、`PKG_CONFIG_PATH`、`ac_cv_path_PYTHON` 和 `ac_cv_path_DOT`。例如: ``` export CC=<path_to_cross_compiler>/gcc export CXX=<path_to_cross_compiler>/g++ export PKG_CONFIG_PATH=<path_to_cross_compiler>/pkg-config export ac_cv_path_PYTHON=<path_to_python> export ac_cv_path_DOT=<path_to_dot> ``` 注意替换 `<path_to_cross_compiler>`、`<path_to_python>` 和 `<path_to_dot>` 为实际的路径。 5. 配置 systemd 的编译选项。你需要指定目标架构和交叉编译工具链的路径。例如: ``` ./configure --host=<target_arch> --prefix=<install_dir> ``` 注意将 `<target_arch>` 替换为你的目标 ARM 架构(如 arm-linux-gnueabi), `<install_dir>` 替换为你希望安装 `systemctl` 的路径。 6. 编译并安装 systemd。运行以下命令: ``` make sudo make install ``` 这将编译并安装 systemd 及其相关组件,其中包括 `systemctl`。 请注意,这只是一个大致的过程,具体步骤可能因你的系统和环境而有所不同。在实际进行交叉编译和安装之前,请阅读 systemd 的文档和参考资料,以了解更多详细信息和可能的附加步骤。 希望这些信息对你有所帮助!如果你有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值