LXC交叉编译与使用记录
LXC官网介绍:https://linuxcontainers.org/lxc/introduction/#LXC
编译与安装
方式一
使用自带的configure、make、make install流程,
makefile示例片段:
LXC_DIR_SRC=lxc-3.1.0
.PHONY:all config compile install
all: install
config:
cd $(LXC_DIR_SRC) && \
rm -rf config.cache && \
echo ac_cv_func_prlimit=yes>config.cache && \
echo ac_cv_header_sys_signalfd_h=no>config.cache && \
./configure --host=$(HOST) --prefix=/ --cache-file=config.cache \
CC=$(CC) \
--disable-werror \
--disable-apparmor \
--disable-doc \
--disable-api-docs \
--disable-gnutls \
--disable-selinux \
--disable-cgmanager \
--disable-examples \
--disable-python \
--disable-bash \
--disable-lua \
--disable-seccomp \
--with-gnu-ld
compile:config
$(MAKE) -C $(LXC_DIR_SRC) || exit 1
install:compile
$(MAKE) -C $(LXC_DIR_SRC) install || exit 1
config.cache用于强制修改某些配置开关,如果使用默认配置,可以不需要。
方式二
由于交叉编译工具链的不同和编译环境的差异,方式一往往很难顺利的编译完成(主要原因),而且每次configure都比较慢,同时还生成许多无用文件(次要原因),所以考虑自己写Makefile。
lxc最终生成的文件主要是一个动态库liblxc.so(或类似的名字)和多个二进制工具程序(lxc-create、lxc-start等),如果方式一已经编出来了,根据log就可以清楚的知道哪些文件编成动态库、哪些文件编成程序,大致规律是 程序