对于嵌入式交叉编译总结
這幾天終于搞定了老師項(xiàng)目里我負(fù)責(zé)的部分,主要是做一個(gè)圖像采集的手持端,我選用了JZ2440。
從移植內(nèi)核、制作文件系統(tǒng)、Qt移植總結(jié)下來發(fā)現(xiàn)在對(duì)于代碼的交叉編譯必須保證編譯平臺(tái)的一致性。對(duì)于s3c2440來說是armv4t,所以當(dāng)我們編譯出來程序必須要是
執(zhí)行 arm-linux-readelf libjpeg.so.62.0.0 -A (libjpeg.so.62.0.0 為我交叉編譯出來的)
這里的Tag_CPU_arch: v4T 很重要 、我的工具鏈arm-none-linux-gnueabi-(4.3.2)默認(rèn)編譯出來的程序?yàn)閂5 平臺(tái)的,由于我又是新手,開始時(shí)給我?guī)砗芏嗬_
后來我成功搭建好busybox時(shí)Qt程序老是出現(xiàn)非法指令問題
我查看了我生成的Qt程序,發(fā)現(xiàn)為V5,這也不難解釋Illegal instruction錯(cuò)誤
開始時(shí)我走了彎路,我在我寫的Qt程序里加入了
后來發(fā)現(xiàn)還是編譯出來為V5,我又嘗試在Makefile中加入march指定,發(fā)現(xiàn)還是不行,后來突然發(fā)現(xiàn)我編譯出來的Qt鏈接庫全是V5平臺(tái)的,怪不得編譯出來的程序也是V5,什么樣的爹什么樣的兒子嘛。于是我又開始程序交叉編譯armv4t的qt4.7 。這這間經(jīng)歷的坑我就不多說了,直接貼上我的文件
./configure -opensource -embedded armv4t -xplatform qws/linux-arm-g++ -no-webkit -nomake demos -nomake examples -qt-libtiff -qt-libmng -qt-libjpeg -qt-mouse-tslib -qt-mouse-pc -qt-gfx-transformed -no-mouse-linuxtp -prefix /opt/qt-4.7.1 -I /usr/local/tslib/include -L /usr/local/tslib/lib
加粗的這一句很重要,直接決定了編譯出來是armv4t還是armv5
(默認(rèn)V5)。最后的-I -L根據(jù)自己情況寫
編譯libtools
./configure CC=arm-linux-gcc-yin –host=arm –prefix=/opt/jpeg/libtool-release
編譯jpeg-6b
./configure CC=arm-linux-gcc-yin –prefix=/opt/jpeg/jpeg-6b-release –enable-shared –enable-static –host=arm
編譯tslib
CFLAGS=-march=armv4t ./configure –host=arm-linux –cache-file=arm-linux.cache -prefix=/usr/local/tslib ac_cv_func_malloc_0_nonnull=yes
arm-linux-gcc-yin 是我自己做的腳本。
最后一句:最重要的是統(tǒng)一
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的对于嵌入式交叉编译总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 异步返回参数封装
- 下一篇: 苹果耳机无线真假测试软件,辨认苹果耳机真