买了块开发板,提供的编译环境要求必须要是 win7 64bit ubuntu 12.04。正好我电脑装了win8.1 64bit ubuntu16.04,没办法只好自己重新安装编译环境了。
第一步,设置共享文件夹,试过了好多方法,没成功;临时找到个解决办法,通过优盘拷贝。
第二步,将讯为提供的交叉编译工具arm-linux-gcc-4.3.2.tar.gz拷贝到linux系统里,解压缩。通过vim .bashrc命令打开.bashrc这个文件,在最后面添加上以下路径
export PATH=$PATH:/具体存放交叉编译工具的路径/bin
esc -> :x
然后再在terminal里执行source .bashrc完成刚才的更改。
有一个确认修改正确忆否的方法,在terminal里输入 arm-none-linux-gnueabi-gcc -v,查看具体的输出,如果没有提示说“not such file or directory”的话,那么就说明安装成功了。
如果路径什么都是正确的话,仍然提示“not such file or directory”,这时候可以使用file arm-none-linux-gnueabi-gcc查看交叉编译工具是32位的还是64位的,如果是的话,那么就需要安装兼容包;大致命令如下:
apt-get install libc6:i386 libgcc1:i386 gcc-4.3-base:i386:
ia32-libs
libstdc++5:i386 libstdc++6:i386
这时候拷贝itop提供的一些demo程序,修改makefile里的配置路径后可以进行编译了。这一步算是完成了,只是目前手头没有板子就没有办法确认程序的好坏了。
第三步,因为第一步的共享文件夹没有设置成功,就考虑使用SSH来交换文件。windows上的SSH链接时提示服务器不支持策略,所以就搜索了下,从一个论坛里发现新版本的SSH没有配置相应的策略,需要修改配置文件。具体方法如下:
问题已经解决了,修改ssh的配置文件 /etc/ssh/sshd_config
在末尾添加:
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc
MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
重启sshd服务(service sshd restart)后,即可正常连接。
终于可以不使用优盘拷贝了,OY.
第五步,接下来开始编译内核,通过SSH把源码拷贝到虚拟机里,解压缩后输入make zImage,出现的问题和解决办法如下
问题:
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/opt/ARM/mini6410/linux/linux-2.6.38/kernel/Makefile:140: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:916: recipe for target 'kernel' failed
make: *** [kernel] Error 2
按照下面的处理就好了,这段代码好像是perl语言。
1、删除
@val = @{$canned_values{$hz}};
if (!defined(@val)) {
@val = compute_values($hz);
}
2、output前面加入
$cv = $canned_values{$hz};
@val = defined($cv) ? @$cv : compute_values($hz);
嵌入式LInux开发环境的构筑果然是个难点啊,问题不断,接下来又出了BUG了,看提示应该是编译器的BUG了。
cc net/netfilter/core.o
net/netfilter/core.c:In function 'nf_hook_slow':
net/netfilter/core.c:197:error:could not split insn
please submit a full bug report.with preprocessed source if appropriate
本文永久更新地址://m.ajphoenix.com/linux/22111.html