正点原子can驱动实验——交叉编译iproute2总结

一开始按照原子教程来一步一步编译发现一直报错,经过一晚上在网络上摸爬滚打,终于是解决问题了

修改Makefile

  • 32行CC = gcc改成CC = 交叉编译器 ,比如我的就是
CC = /usr/local/arm/gcc-linaro-4.9.4-2017.01-86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
  • 44行SUBDIRS = lib ip tc bridge misc netem genl tipc man修改为SUBDIRS = lib ip

修改include/namespace.h

由于gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabi编译器的原因,函数setns声明有冲突,报错如下:

In file included from utils.c:36:0:
../include/namespace.h:35:19: error: static declaration of ‘setns’ follows non-static declaration
static inline int setns(int fd, int nstype)
                  ^~~~~
In file included from /usr/arm/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/libc/usr/include/sched.h:43:0,
                from ../include/namespace.h:4,
                from utils.c:36:
/usr/arm/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/libc/usr/include/bits/sched.h:91:12: note: previous declaration of ‘setns’ was here
extern int setns (int __fd, int __nstype) __THROW;  

extern int setns (int __fd, int __nstype) __THROW;代替include/namespace.h中原先的setns函数,修改好如下:

#ifndef HAVE_SETNS
extern int setns (int __fd, int __nstype) __THROW;
/*
static inline int setns(int fd, int nstype)
{
...
}
*/
#endif /* HAVE_SETNS */  

安装bison flex等工具

编译中可能会出现bison : command ont found等报错,解决方法:

sudo apt-get install bison
sudo apt-get install flex

参考链接1,感谢各位大佬分享
参考链接2,感谢各位大佬分享

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值