cntos7.7 x86架构下编译安装lxd

centos安装:

yum install acl autoconf dnsmasq git golang libacl libacl-devel libtool make rsync squashfs-tools tar tcl ebtables

编译xz-utils
cd /root/hbdl/xz-5.2.5
./configure --prefix=/usr/local/udsafe/xz/ && make  && make install


编译libcap
cd /root/hbdl/libpcap-1.9.1
./configure && make && make install
#出现如下错误,需要 yum install flex bison
#configure: error: Neither flex nor lex was found.

编译pkg-config-0.29.2
cd /root/hbdl/pkg-config-0.29.2
./configure --with-internal-glib --prefix=/usr/local/udsafe && make && make install

编译lxc
cd lxc-lxc-4.0.2
./autogen.sh && ./configure --prefix=/usr/local/udsafe && make && sudo make install

编译libuv
cd /root/hbdl/libuv-1.38.0
./autogen.sh && ./configure --prefix=/usr/local/udsafe && make && sudo make install

编译lxd
cd lxd-4.0.2

export GOPATH=$(pwd)/_dist
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
将环境变量导入到~/.bashrc

export CGO_CFLAGS="-I/root/hbdl/lxd-lxd-4.0.2/_dist/deps/sqlite/ -I/root/hbdl/lxd-lxd-4.0.2/_dist/deps/libco/ -I/root/hbdl/lxd-lxd-4.0.2/_dist/deps/raft/include/ -I/root/hbdl/lxd-lxd-4.0.2/_dist/deps/dqlite/include/"
export CGO_LDFLAGS="-L/root/hbdl/lxd-lxd-4.0.2/_dist/deps/sqlite/.libs/ -L/root/hbdl/lxd-lxd-4.0.2/_dist/deps/libco/ -L/root/hbdl/lxd-lxd-4.0.2/_dist/deps/raft/.libs -L/root/hbdl/lxd-lxd-4.0.2/_dist/deps/dqlite/.libs/"
export LD_LIBRARY_PATH="/root/hbdl/lxd-lxd-4.0.2/_dist/deps/sqlite/.libs/:/root/hbdl/lxd-lxd-4.0.2/_dist/deps/libco/:/root/hbdl/lxd-lxd-4.0.2/_dist/deps/raft/.libs/:/root/hbdl/lxd-lxd-4.0.2/_dist/deps/dqlite/.libs/"
export CGO_LDFLAGS_ALLOW="-Wl,-wrap,pthread_create"

 

source ~/.bashrc

编译lxd报错:
#code in directory 修改lxc源码导包问题
/root/hbdl/lxd-lxd-4.0.2/_dist/src/vbom.ml/util/sortorder expects import "github.com/fvbommel/sortorder
vi ./lxc/utils.go
import (
"fmt"
"io/ioutil"
"os"
"sort"
"strings"

"github.com/pkg/errors"
注释更换导入的库路径
//"vbom.ml/util/sortorder"
"github.com/fvbommel/sortorder"
lxd "github.com/lxc/lxd/client"
"github.com/lxc/lxd/shared/api"
"github.com/lxc/lxd/shared/i18n"
"github.com/lxc/lxd/shared/termios"
)

#少libudev库
_dist/src/github.com/farjump/go-libudev/device.go:7:23: fatal error: libudev.h: No such file or directory
#include <libudev.h>
#安装systemd-devel 解决
yum reinstall systemd-devel


解决此问题,将路径软连过去即可
shared/idmap/shift_linux.go:30:28: fatal error: sys/capability.h: No such file or director

ln -s /usr/include/linux/capability.h /usr/include/sys/capability.h

解决C99问题
In file included from _dist/src/github.com/lxc/lxd/lxd/storage/drivers/utils_cgo.go:33:0:
./../../include/memory_utils.h: In function 'free_string_list':
./../../include/memory_utils.h:57:3: error: 'for' loop initial declarations are only allowed in C99 mode
for (int i = 0; list[i]; i++)
^
./../../include/memory_utils.h:57:3: note: use option -std=c99 or -std=gnu99 to compile your code
#####
vi lxd/include/memory_utils.h 也有可能是_dist/src/github.com/lxc/lxd/lxd/include/memory_utils.h文件

54 static inline void free_string_list(char **list)
55 {
56 if (list) {
57 int i;
58 for (i = 0; list[i]; i++)
59 free(list[i]);
60 free_disarm(list);
61 }
62 }

 

PKG_CONFIG问题:
因为PKG_CONFIG路劲找不到pkgconfig这个libcap.pc 此文件
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib64/pkgconfig

##############################
lxd编译完成后的命令及迁移
将所需 yum依赖包打包成rpm包 可以用 downloadonly --doownloaddir=xxx 报错yum包

 

需要的资源包git 或者官网均可找到下载地址,我就不多此一举了。。。

posted @ 2020-11-09 23:16  LDoctorF  阅读(244)  评论(0编辑  收藏  举报