在编译docker时出现了一个cast-align的错误,
提示由于-Werror=cast-align引起的,但是编译命令里并没有这个项目
编译命令:
gcc -DHAVE_CONFIG_H -I. -I../../src -fPIC -DPIC -DLXCROOTFSMOUNT=\"/usr/local/lib/lxc/rootfs\" -DLXCPATH=\"/usr/local/var/lib/lxc\" -DLXC_GLOBAL_CONF=\"/usr/local/etc/lxc/lxc.conf\" -DLXCINITDIR=\"/usr/local/libexec\" -DLIBEXECDIR=\"/usr/local/libexec\" -DLXCTEMPLATEDIR=\"/usr/local/share/lxc/templates\" -DLXCTEMPLATECONFIG=\"/usr/local/share/lxc/config\" -DLOGPATH=\"/usr/local/var/log/lxc\" -DLXC_DEFAULT_CONFIG=\"/usr/local/etc/lxc/default.conf\" -DLXC_USERNIC_DB=\"/run/lxc/nics\" -DLXC_USERNIC_CONF=\"/usr/local/etc/lxc/lxc-usernet\" -DDEFAULT_CGROUP_PATTERN=\"lxc/%n\" -DRUNTIME_PATH=\"/run\" -DSBINDIR=\"/usr/local/sbin\" -DAPPARMOR_CACHE_DIR=\"/usr/local/var/cache/lxc/apparmor\" -I ../../src -I ../../src/lxc -I ../../src/lxc/storage -I ../../src/lxc/cgroups -I ../../src/lxc/json -DHAVE_ISULAD -DHAVE_OPENSSL -DHAVE_SECCOMP -DHAVE_SELINUX -pthread -D_FORTIFY_SOURCE=2 -Wall -O2 -fdiagnostics-color -Wimplicit-fallthrough=5 -Wcast-align -fno-strict-aliasing -fstack-clash-protection -fstack-protector-strong --param=ssp-buffer-size=4 -Werror=implicit-function-declaration -Wlogical-op -Wmissing-include-dirs -Winit-self -Wunused-but-set-variable -Wfloat-equal -Wsuggest-attribute=noreturn -Werror=return-type -Werror=incompatible-pointer-types -Wformat=2 -Wshadow -Wendif-labels -Werror=overflow -fdiagnostics-show-option -Werror=shift-count-overflow -Werror=shift-overflow=2 -Wdate-time -Wnested-externs -fasynchronous-unwind-tables -pipe -fexceptions -Wvla -std=gnu11 -D_FORTIFY_SOURCE=2 -Wall -fPIC -Werror -MT liblxc_la-confile.lo -MD -MP -MF .deps/liblxc_la-confile.Tpo -c confile.c -fPIC -DPIC -o .libs/liblxc_la-confile.o
查找gcc的文档发现 -Werror的作用是将全部的warning 当成error。
所以解决办法就是去掉Makefile中的-Werror。
编译成功。
软件运行起来没什么问题。