编译 toybox (enable smack)

在编译 toybox的时候,选中了 smack选项,然后,编译的时候,报错:

In file included from ./toys.h:71:0,
                 from lib/xwrap.c:10:
./lib/lsm.h:23:23: fatal error: sys/smack.h: No such file or directory
compilation terminated.
In file included from ./toys.h:71:0,
                 from lib/llist.c:6:
./lib/lsm.h:23:23: fatal error: sys/smack.h: No such file or directory

原因是缺少 smack库。

可以从下面的页面下载到:

http://schaufler-ca.com/presentations_and_documents

http://github.com/smack-team

解压后,在 libsmack下有个sys目录。这个就是要包含的头文件目录。

编译 smack代码,会出来一个库。

然后,回到 toybox, 通过 CFLAGS指定头文件位置,执行  make:

$ CFLAGS="-I$HOME/code/qemu/smack-master/libsmack" make 
但是仍然报头文件找不到的问题。。

解决方法是,把下面的几行

254 if [ generated/config2help -ot scripts/config2help.c ]
255 then
256   do_loudly $HOSTCC scripts/config2help.c -I . lib/xwrap.c lib/llist.c \
257     lib/lib.c lib/portability.c -o generated/config2help || exit 
改为:

254 if [ generated/config2help -ot scripts/config2help.c ]
255 then
256   do_loudly $HOSTCC $CFLAGS scripts/config2help.c -I . lib/xwrap.c lib/llist.c \
257     lib/lib.c lib/portability.c -o generated/config2help || exit 


即在256行加上 CFLAGS。

最后加上LDFLAGS:

$ CFLAGS="-I$HOME/code/qemu/smack-master/libsmack" LDFLAGS="-L$HOME/code/qemu/smack-master/libsmack/.libs -lsmack" make 
scripts/make.sh
Generate headers from toys/*/*.c...
Make generated/config.h from .config.
Compile toybox.....

也可以使用 C_INCLUDE_PATH代替 CFLAGS.

最后使用一个脚本编译。内容如下:

cd toybox-0.7.3
CFLAGS="-I$HOME/code/qemu/smack-master/libsmack"
CFLAGS="$CFLAGS -I$HOME/code/qemu/openssl-1.1.0e/include"
LDFLAGS="-L$HOME/code/qemu/smack-master/libsmack/.libs -lsmack"
LDFLAGS="$LDFLAGS -L$HOME/code/qemu/openssl-1.1.0e -lcrypto -lssl"
ARCH=arm
CROSS_COMPILE=arm-linux-gnueabi-
export CFLAGS LDFLAGS ARCH CROSS_COMPILE
make
rm -rf $HOME/mytoybox
PREFIX=$HOME/mytoybox make install


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值