cannot find crt1.o No such file or directory的一种解决方法
2014-11-08 23:52
239 查看
最近在嵌入式系统上装jpeg的库,下载了jpegsrc.v8b.tar.gz,解压后./configure,此时我配置的是--host=arm-none-linux-gnueabi,结果出现报错,
看着很无语,因为这个错误之前在做tslib检测触摸屏时就碰到过,只是当时又去忙找工作的事就不了了之了,果然欠下的债还是要还的。这个里面报错是说C编译器没有工作,可是交叉编译工具链(其实是交叉编译器)是安装好了的(我就是用的这个编译的内核和u-boot及触摸屏的驱动)。根据提示查看config.log,有如下信息:
其实根据arm-none-linux-gnueabi-gcc:no input file已经可以知道交叉编译器是能工作的,之前我没有解决这个问题是因为根据前面的信息一直以为是版本的问题,也根据网上的一些教程下载安装glibc,但是都无济于事。这次我就根据后面的报错信息cannot find crt1.o谷歌加百度,有一篇文章说是解决这个问题的,但是是单一的配置sysroot,这样的话每次都要配置不说,对于没有这个配置选项的程序就呵呵了,(由于我的知识面有限,所以不知道对不对,但是在jpeg库的配置里面我没有找到sysroot的配置选项)在谷歌的一些搜索结果中大概了解到是自己的交叉编译工具链不完整,缺少一些库文件。(不能看到报错说找不到库文件就觉得是自己没有那些文件,还有可能是对文件的权限不够,比如说在虚拟机下如果以root的身份传的库文件,非root用户(比如我的zxs)就算是sudo了也会报错说找不到库文件)有的也给了几种方法。比如说下载安装一个做好的库,也可以自己build,http://comments.gmane.org/gmane.comp.gcc.help/46114这个网页上提到用linaro的做好的完整的交叉编译工具链,当然这是我的首选,不是因为懒,而是我的嵌入式系统用的根文件系统就是linaro的,而且之前也在全志的文档上见过linaro的交叉编译工具链。于是在全志官网http://linux-sunxi.org/Toolchain找到
有这个自然是最好的,不过亲们不用试了,一个收费一个过期,之后再看这个
下载了4.7版本结果不会用,我下载的没有他所说的解压后有bin文件的,不知道是我打开方式不对还是说这个工具链还需要build神马的。之后便直接在the main selection page is here上下载了一个最新的交叉编译工具链。之后用着问题解决,
(对比arm-none-linux-gnueabi和armeb-linux-gnueabihf可以发现后者包含crt1.o)其实就是找一个pre-built
cross toolchains。问题还没有这么简单,这个过程中也对交叉编译工具链有了更深入的理解,这个工具链以后很可能可能还会出问题,http://blog.163.com/linan_6688_cool/blog/static/111774958200932963248316/ 还是要学习分步编译和安装交叉编译工具链所需要的库和源码(估计之前的那个4.7版本属于这类)真正的去掌握搭建交叉编译环境。
之前从来没有想过是交叉编译工具链的问题,安装的时候很容易,毕竟用前辈用过的所以从未怀疑过,感觉嵌入式底层的环境还是很复杂的,没有一个清晰的认识之前或者是自己的面不够广之前真的会走很多弯路,有很多东西意想不到。网上很多博文教程拿到你这里来可能就不适用了,我觉得不是说那篇文章有问题,原因可能很多,譬如说写这些的人比较熟悉会忽略自己配置过的细节,运行环境不同,软件更新等等等等。总之在熟悉之前总是会出各种千奇百怪的问题(有人手把手带是另一说了),我之前根据官网上的自己去做也出现过根文件系统过时,命令不适用等等情况,(软件更新太快但是官网跟新很慢,就像全志的官网上也会提示说有的链接可能已经过期了)这些很基本的东西都会耗费时间,我觉得主要还是耐心点,学会多变通。第一篇博文多罗嗦了几句,不敢对某一专门的问题做深入的探讨,也不知道上面的这些有多少观点是错的。希望觉得有错误的朋友可以提出来一起探讨
看着很无语,因为这个错误之前在做tslib检测触摸屏时就碰到过,只是当时又去忙找工作的事就不了了之了,果然欠下的债还是要还的。这个里面报错是说C编译器没有工作,可是交叉编译工具链(其实是交叉编译器)是安装好了的(我就是用的这个编译的内核和u-boot及触摸屏的驱动)。根据提示查看config.log,有如下信息:
其实根据arm-none-linux-gnueabi-gcc:no input file已经可以知道交叉编译器是能工作的,之前我没有解决这个问题是因为根据前面的信息一直以为是版本的问题,也根据网上的一些教程下载安装glibc,但是都无济于事。这次我就根据后面的报错信息cannot find crt1.o谷歌加百度,有一篇文章说是解决这个问题的,但是是单一的配置sysroot,这样的话每次都要配置不说,对于没有这个配置选项的程序就呵呵了,(由于我的知识面有限,所以不知道对不对,但是在jpeg库的配置里面我没有找到sysroot的配置选项)在谷歌的一些搜索结果中大概了解到是自己的交叉编译工具链不完整,缺少一些库文件。(不能看到报错说找不到库文件就觉得是自己没有那些文件,还有可能是对文件的权限不够,比如说在虚拟机下如果以root的身份传的库文件,非root用户(比如我的zxs)就算是sudo了也会报错说找不到库文件)有的也给了几种方法。比如说下载安装一个做好的库,也可以自己build,http://comments.gmane.org/gmane.comp.gcc.help/46114这个网页上提到用linaro的做好的完整的交叉编译工具链,当然这是我的首选,不是因为懒,而是我的嵌入式系统用的根文件系统就是linaro的,而且之前也在全志的文档上见过linaro的交叉编译工具链。于是在全志官网http://linux-sunxi.org/Toolchain找到
有这个自然是最好的,不过亲们不用试了,一个收费一个过期,之后再看这个
下载了4.7版本结果不会用,我下载的没有他所说的解压后有bin文件的,不知道是我打开方式不对还是说这个工具链还需要build神马的。之后便直接在the main selection page is here上下载了一个最新的交叉编译工具链。之后用着问题解决,
(对比arm-none-linux-gnueabi和armeb-linux-gnueabihf可以发现后者包含crt1.o)其实就是找一个pre-built
cross toolchains。问题还没有这么简单,这个过程中也对交叉编译工具链有了更深入的理解,这个工具链以后很可能可能还会出问题,http://blog.163.com/linan_6688_cool/blog/static/111774958200932963248316/ 还是要学习分步编译和安装交叉编译工具链所需要的库和源码(估计之前的那个4.7版本属于这类)真正的去掌握搭建交叉编译环境。
之前从来没有想过是交叉编译工具链的问题,安装的时候很容易,毕竟用前辈用过的所以从未怀疑过,感觉嵌入式底层的环境还是很复杂的,没有一个清晰的认识之前或者是自己的面不够广之前真的会走很多弯路,有很多东西意想不到。网上很多博文教程拿到你这里来可能就不适用了,我觉得不是说那篇文章有问题,原因可能很多,譬如说写这些的人比较熟悉会忽略自己配置过的细节,运行环境不同,软件更新等等等等。总之在熟悉之前总是会出各种千奇百怪的问题(有人手把手带是另一说了),我之前根据官网上的自己去做也出现过根文件系统过时,命令不适用等等情况,(软件更新太快但是官网跟新很慢,就像全志的官网上也会提示说有的链接可能已经过期了)这些很基本的东西都会耗费时间,我觉得主要还是耐心点,学会多变通。第一篇博文多罗嗦了几句,不敢对某一专门的问题做深入的探讨,也不知道上面的这些有多少观点是错的。希望觉得有错误的朋友可以提出来一起探讨
相关文章推荐
- 文件被锁住删除不了的一种解决方法
- 解决DBGrid中关于鼠标滚轮的一种方法。
- 多表单提交的一种解决方法
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- 电脑上不去网 的一种解决方法
- 引起线程死锁的一种情况及解决方法
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- Oracle乱码的一种解决方法
- SQL安装时出错,提示:安装程序配置服务器失败 参考服务器错误日志。针对其中一种情况的解决方法!
- 一种快速解决JAVA内存泄漏问题的方法
- 【原创】关于更改桌面背景图片不见效的一种解决方法
- 多表单提交的一种解决方法
- 解决java/jsp乱码的一种转换方法
- 一种“您无权查看该网页”的原因和解决方法
- Sql Server数据库置疑的一种解决方法
- 中文拼音模糊查询的一种解决方法
- GridView绑定数据源,无记录时表头也显示的一种解决方法
- ubuntu6.06容易死机的一种解决方法
- 关于ISA2004内网卡网线拔插造成ISA代理失效问题的一种解决方法(下列错误而失败:0x80072
- 一种快速解决JAVA内存泄漏问题的方法