天嵌 ARM开发社区

 找回密码
 注册
查看: 10562|回复: 23

关于纯ubuntu下开发环境搭建的教程

[复制链接]
climberyoung 发表于 2009-12-21 16:49:14 | 显示全部楼层 |阅读模式
本帖最后由 climberyoung 于 2009-12-21 17:17 编辑

以下都是自己刚买到板子后在纯ubuntu9.04下搭建开发环境的记录,希望对大家有用,不足之处,望大家指正。

评分

参与人数 1 +6 收起 理由
yuweixian + 6 厉害

查看全部评分

 楼主| climberyoung 发表于 2009-12-21 16:51:38 | 显示全部楼层
1.交叉编译环境的配置
sudo gedit /etc/environment,把文件内容改为PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/EmbedSky/4.3.3/bin"。然后source /etc/environment(应用更改),最后arm-linux-gcc -v,如果无错误提示就配置正确,注:具体交叉编译器路径要根据实际情况更改。我用的是cs4.3.3的。
 楼主| climberyoung 发表于 2009-12-21 16:54:33 | 显示全部楼层
2.串口通信配置
串口调试工具(也就是windows下的超级终端)mincom,首先sudo apt-get minicom安装好minicom,然后minicom -s设置minicom,具体步骤第一次 启动时:即输入 minicom提示 错误。则 需: minicom -s
启动出现配置菜单:选serial port setup
进入串口配置
输入A配置串口驱动为/dev/ttyS0
输入E配置速率为115200 8N1
输入F将 Hardware Flow Control 设 为 NO
回车 退出
由于我们使用minicom作为超级终端控制路由器等设备, 而不是控制modem, 所以需要修改Modem and dialing, 将Init string, Reset string, Hang-up string设置为空. (注意!!!,删除原有字符时要彻底删除到backspace键无法继续删除为止,否则设置有误)设置完成后选择Save setup as dfl将当前设置保存为默认设置.
在配置菜单 选Save setup as df1保存(一定要记得这一步)
选Exit退出
下次在输入minicon 即可直接进入。
命令minicom是进入串口超级终端画面,而minicom -s为配置minicom。
说明/dev/ttyS0 对应为串口0 为你连接开发板的端口。
注意:非正常关闭minicom,会在/var/lock下创建几个文件LCK*,这几个文件阻止了minicom的运行,将它们删除后即可恢复.
 楼主| climberyoung 发表于 2009-12-21 16:55:22 | 显示全部楼层
3.usb下载配置
直接运行dnw2的deb包,或者$dpkg -i /path/to/dnw2_0.0.20090411-1_i386.deb
安装。安装后,在/usr/sbin下有dnw2执行文件。使用说明在/usr/share/doc/dnw2/REA安装完成后,切换到root模式下,运行命令为dnw2 镜像文件路径(累计到的一个路径命令的使用方法,如果镜像文件就在所在路径的目录里,镜像文件路径就输入文件名字,如果是在子目录的一个文件里,就输入 ./路径/文件名)。注意,必须在root用户环境下才能下载(前提是在nor启动后,minicom里面选择了相应的选项)。
 楼主| climberyoung 发表于 2009-12-21 17:00:02 | 显示全部楼层
做好以上三步,开发板如果有uboot,就可以通过串口和dnw工具下载内核、文件系统了
 楼主| climberyoung 发表于 2009-12-21 17:01:54 | 显示全部楼层
4.配置镜像时出了几次问题,首先是未用sudo,导致提示错误:
climberyoung@ubuntu:/opt/EmbedSky/linux-2.6.25.8$ make menuconfig
  HOSTCC  scripts/basic/fixdep
scripts/basic/fixdep.c:399: 致命错误: 打开依赖文件 scripts/basic/.fixdep.d:Permission denied
编译中断。
make[1]: *** [scripts/basic/fixdep] 错误 1
make: *** [scripts_basic] 错误 2
然后又出现缺包的问题:
climberyoung@ubuntu:/opt/EmbedSky/linux-2.6.25.8$ sudo make menuconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/docproc
  HOSTCC  scripts/kconfig/conf.o
scripts/kconfig/conf.c: 在函数‘conf_askvalue’中:
scripts/kconfig/conf.c:113: 警告: 忽略声明有 warn_unused_result 属性的‘fgets’的返回值
scripts/kconfig/conf.c: 在函数‘conf_choice’中:
scripts/kconfig/conf.c:364: 警告: 忽略声明有 warn_unused_result 属性的‘fgets’的返回值
  HOSTCC  scripts/kconfig/kxgettext.o
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1
make: *** [menuconfig] 错误 2

在新立得里面更新了libcurses-ocaml-dev,就通过了
 楼主| climberyoung 发表于 2009-12-21 17:02:35 | 显示全部楼层
5.编译镜像时出了问题,环境变量里设置好了bin路径,make menuconfig 也可以执行,直接运行arm-linux-gcc -v也正常执行,可是当make zImage执行后就提示
climberyoung@ubuntu:/opt/EmbedSky/linux-2.6.30.4$ sudo make zImage
make: arm-linux-gcc:命令未找到
  CHK     include/linux/version.h
make[1]: “include/asm-arm/mach-types.h”是最新的。
  CHK     include/linux/utsrelease.h
  SYMLINK include/asm -> include/asm-arm
  CC      kernel/bounds.s
/bin/sh: arm-linux-gcc: not found
make[1]: *** [kernel/bounds.s] 错误 127
make: *** [prepare0] 错误 2
climberyoung@ubuntu:/opt/EmbedSky/linux-2.6.30.4$
解决方法是执行sudo su切换到root下,再执行make menuconfig就可以了。
 楼主| climberyoung 发表于 2009-12-21 17:11:18 | 显示全部楼层
6.编译qt2.2.0时会遇到几个错误
kernel/qpixmapcache.cpp:125:57: 错误: asm/page.h:没有该文件或目录
kernel/qpixmapcache.cpp: In constructor ‘QSharedMemoryManager::QSharedMemoryManager()’:
kernel/qpixmapcache.cpp:539: 错误: ‘PAGE_SIZE’在此作用域中尚未声明
kernel/qpixmapcache.cpp:539: 错误: ‘PAGE_MASK’在此作用域中尚未声明
kernel/qpixmapcache.cpp: In member function ‘void QSharedMemoryManager::internal_free(QSMemPtr)’:
kernel/qpixmapcache.cpp:773: 错误: ‘PAGE_SIZE’在此作用域中尚未声明
kernel/qpixmapcache.cpp:773: 错误: ‘PAGE_MASK’在此作用域中尚未声明
make[1]: *** [tmp/release-shared-linux-generic-g++-no-keypad/kernel/qpixmapcache.o] 错误 1
make[1]:正在离开目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/src'
这个错误需要将交叉编译器下的page.h复制到/usr/include/asm/,page.h你可以用find -name page.h命令查找。
接下来先不管,直接编译x86或者arm平台的qt2.2.0,肯定不会通过,不管你用tq放出来的第一版代码还是第二版代码,至少我是这样,提示的错误我就不贴了,反正是连锁反应,跟踪到这样一句错误,提示是tools/qmemoryfile_unix.cpp的143行调用有误,查阅资料说是gcc-4.3对语法检查严格的结果,找到出错的那一句,root@ubuntu:/# find -name qmemoryfile_unix.cpp
./opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/src/tools/qmemoryfile_unix.cpp
./opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia/qmemoryfile_unix.cpp
./opt/EmbedSky/Qte/arm-qtopia-2.2.0/qt2/src/tools/qmemoryfile_unix.cpp
./opt/EmbedSky/Qte/arm-qtopia-2.2.0/qtopia/src/libraries/qtopia/qmemoryfile_unix.cpp

        if (!f)
            f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY);       
将之改为
int f = ::open(tmpFile.latin1(), O_WRONLY,0777);

        if (!f)
            f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY,0777);        就OK了
注意:以上四个文件都要改
 楼主| climberyoung 发表于 2009-12-21 17:17:02 | 显示全部楼层
由于第一版的qt源码环境变量设置有问题,导致我查错查了好久(大把大把的时间呀,还好我大四哦),建议和我一样的新手用才放出来的qt源码。
lirics 发表于 2010-1-1 21:57:23 | 显示全部楼层
编译后错误就只剩下 make[1]: 正在进入目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia'
make[2]: 正在进入目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src'
make[3]: 正在进入目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src'
cd qt && make -f Makefile
make[4]: 正在进入目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/qt'
make[5]: 正在进入目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/qt'
make[5]:正在离开目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/qt'
make[4]:正在离开目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/qt'
cd libraries/qtopia && make -f Makefile
make[4]: 正在进入目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia'
make[5]: 正在进入目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia'
g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -Os -fPIC  -DQTOPIA_DATA_LINKING -DQCONFIG=\"qconfig-qpe.h\" -DQTOPIA_TARGET=\"qpe\" -DQTOPIA_TRTARGET=\"libqpe\" -DQT_NO_DEBUG -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/mkspecs/qws/linux-generic-g++ -I. -I../../../include/qtopia/private -I../../../pics/qpe -I../../../include -I/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include -I../../../include/qtopia/private/ -I.moc/release-shared/ -o .obj/release-shared/passwordbase_p.o .ui/release-shared/passwordbase_p.cpp
.ui/release-shared/passwordbase_p.cpp: In constructor ‘PasswordBase:asswordBase(QWidget*, const char*, uint)’:
.ui/release-shared/passwordbase_p.cpp:35: 错误: 对‘QSizePolicy:SizePolicy(QSizePolicy::SizeType, QSizePolicy::SizeType, int, int, bool)’的调用没有匹配的函数
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include/qsizepolicy.h:93: 附注: 备选为: QSizePolicy:SizePolicy(int)
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include/qsizepolicy.h:99: 附注:          QSizePolicy:SizePolicy(QSizePolicy::SizeType, QSizePolicy::SizeType, bool)
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include/qsizepolicy.h:63: 附注:          QSizePolicy:SizePolicy()
/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/include/qsizepolicy.h:46: 附注:          QSizePolicy:SizePolicy(const QSizePolicy&)
make[5]: *** [.obj/release-shared/passwordbase_p.o] 错误 1
make[5]:正在离开目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia'
make[4]: *** [all] 错误 2
make[4]:正在离开目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src/libraries/qtopia'
make[3]: *** [sub-libraries-qtopia] 错误 2
make[3]:正在离开目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src'
make[2]: *** [install] 错误 2
make[2]:正在离开目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/src'
make[1]: *** [install] 错误 2
make[1]:正在离开目录 `/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia'
done !

我遇到这样的问题不知道该如何解决
hooao 发表于 2010-1-27 21:36:09 | 显示全部楼层
mark一下`:o
luoqindong 发表于 2010-1-28 05:49:27 | 显示全部楼层
好啊,我需要!谢谢
monskyi 发表于 2010-1-28 13:18:10 | 显示全部楼层
顶一个
很多人用tq2440的开发板用ubuntu 9.04 开发的吗?
泳宏 发表于 2010-5-26 21:24:42 | 显示全部楼层
3# climberyoung




进来这里后,为什么选不了东西??
因该怎么做?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
亚瑟王 发表于 2010-5-27 16:11:10 | 显示全部楼层
你已经选择了o了,现在在dnw软件上发送文件了。dnw的操作见4.2章节。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-29 23:36 , Processed in 1.062500 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表