如何在Linux下用QT creator搭建mips-linux交叉编译开发环境,如果您熟悉ARM-linux环境搭建的话也希望你能指

如何在Linux下用QT creator搭建mips-linux交叉编译开发环境,如果您熟悉ARM-linux环境搭建的话也希望你能指,第1张

首先你的linux系统要装QT库 然后你要编译mips还要有Mips的编译器 arm的是arm-linux-gcc mips我不熟悉 然后就可以把Qt creator下的工程拿到linux下来编译了

安装QT库需比较繁琐 你先看看网上的教程 有问题再找我吧

运行环境:Ubuntu12.04

PC提前安装库:flex,bison,libncureses5-dev,texinfo,这些库提前apt-get install。

需要重新安装:gawk(先apt-get remove mawk, 然后apt-get install gawk,工具链构建完成后可恢复)。

交叉编译需要包,几乎都可以在GNU得到:

binutils-2.22:GNU的工具包;

gcc-4.6.2:GCC;

glibc-2.14:GNU的C库;

glibc-ports-2.14:GNU的C库的补丁;

gmp-5.0.4:GNU的数学运算库;

mpc-0.9:GNU的复数运算库;

mpfr-3.0.1:GNU的浮点运算库。中mpfr依赖于gmp,mpc依赖于mpfr与gmp;

linux-2.6.38(用来编译Linux内核以及提供相应头文件)。

第一步 创建目录以及环境变量

在当前用户目录下创建target-project文件夹,在该文件夹下创建mips-module文件夹,在mips-module文件夹下创建三个文件夹:build-tools,kernel,tools,最后,在build-tools文件夹下创建build-gcc,build-boot-gcc,build-glibc,build-binutils文件夹。命令如下:

$ cd ~

$ mkdir -p ./target-project/mips-module/{kernel/,tools/,build-tools/{build-gcc,build-boot-gcc,build-glibc,build-binutils}}

$ tree ./target-project/mips-module/

观察目录结构,如下图:

使用脚本构建环境变量,脚本内容如下图:

注意修改/home/用户名,修改正确后,使用source使脚本生效

$ cd target-project

$ chmod +x mips.sh

$ source mips.sh

可以使用echo査看相关变量名以观察环境变量是否生效。

最后把linux-2.6.38.tar.bz2放置在kernel文件夹下,binutils-2.22.tar.gz,gcc-4.6.2.tar.gz,glibc-2.14.tar.gz,glibc-ports-2.14.tar.gz,gmp-5.0.4.tar.gz,mpc-0.9.tar.gz,mpfr-3.0.1.tar.gz放置在build-tools文件夹下。

第二步 安装基于MIPS的linux头文件

$ cd $PRJROOT/kernel

$ tar -xjvf linux-2.6.38.tar.bz2

$ cd linux-2.6.38

在指定路径下创建include文件夹,用来存放相关头文件。

$ mkdir -p $TARGET_PREFIX/include

保证linux源码是干净的。

$ make mrproper

生成需要的头文件。

$ make ARCH=mips headers_check

$ make ARCH=mips INSTALL_HDR_PATH=dest headers_install

将dest文件夹下的所有文件复制到指定的include文件夹内。

$ cp -rv dest/include/* $TARGET_PREFIX/include

最后删除dest文件夹

$ rm -rf dest

$ ls -l $TARGET_PREFIX/include

査看生成的include文件夹,如下图:

第三步 安装binutils-2.22

$ cd $PRJROOT/build-tools

$ tar -xzvf binutils-2.22.tar.gz

$ cd build-binutils

$ ../binutils-2.22/configure --target=$TARGET --prefix=$PREFIX

$ make

$ make install

我在安装binutils-2.22时会产生这样一个bug,如下图所示:

错误原因就是-Werror,把warning当成error处理,需要修改相关位置的Makefile文件。而经过察看后,发现binutils都是automake,因此需要重新automake。class="keylink">wstewYXV0by10b29sc6Osx9Kw5rG+sdjQ69PruMNtYWtlZmlsZS5pbrDmsb7Su9bCo6xhdXRvbWFrZbDmsb4xLjExLjGjrGF1dG9jb25msOaxvjIuNjShozxiciAvPtDo0qrPyLCy17BhdXRvY29uZqGjPC9wPgoKPHByZSBjbGFzcz0="brush:java">$ tar -xzvf autoconf-2.64.tar.gz $ cd autoconf-2.64 $ ./configure $ make $ sudo make install

再安装automake。

$ tar -xzvf automake-1.11.1.tar.gz

$ cd automake-1.11.1

$ ./configure

$ make

$ sudo make install

下面开始修改相关文件,主要是去掉-Werror。

$ cd $PRJROOT/build-tools/binutils-2.22/gas

$ gedit configure

将下面内容

# Enable -Werror by default when using gcc

if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" then

ERROR_ON_WARNING=yes

fi

修改为

# Enable -Werror by default when using gcc

if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" then

ERROR_ON_WARNING=no

fi

但是,需要重新configure生成Makefile.in。

$ ./configure (在binutils/gas路径下的configure)

$ make distclean(切记)

然后重新执行第三步,这次编译可过。

最后,$ ls $PREFIX/bin,如下图:

第四步 安装gcc引导器

$ cd $PRJROOT/build-tools

$ tar -xzvf gcc-4.6.2.tar.gz

$ tar -xjvf gmp-5.0.4.tar.bz2

$ mv gmp-5.0.4 ./gcc-4.6.2/gmp

$ tar -xzvf mpc-0.9.tar.gz

$ mv mpc-0.9 ./gcc-4.6.2/mpc

$ tar -xzvf mpfr-3.0.1.tar.gz

$ mv mpfr-3.0.1 ./gcc-4.6.2/mpfr

$ cd build-boot-gcc

$ ../gcc-4.6.2/configure --target=$TARGET --prefix=$PREFIX --disable-shared

--without-headers --with-newlib --enable-languages=c --disable-decimal-float

--disable-libgomp --disable-libmudflap --disable-libssp --disable-threads --disable-multilib

编译并安装gcc引导器、libgcc库。

$ make all-gcc

$ make all-target-libgcc

$ make install-gcc

$ make install-target-libgcc

第五步 编译glibc

$ cd $PRJROOT/build-tools

$ tar xzvf glibc-2.14.tar.gz

$ cd glibc-2.14

删除Makefonfig文件中的内容-lgcc_eh。

$ cp -v Makeconfig{,.bk}

$ sed -e 's/-lgcc_eh//g' Makeconfig.bk >Makeconfig

$ cd ..

$ tar -xjvf glibc-ports-2.14.tar.bz2

$ mv glibc-ports-2.14 ./glibc-2.14/ports

$ cd build-glibc

$ CC=mipsel-linux--gcc ../glibc-2.14/configure --host=$TARGET --prefix="/usr"

--enable-add-ons --with-headers=$TARGET_PREFIX/include libc_cv_forced_unwind=yes

libc_cv_c_cleanup=yes

注意:此时如何设置了LD_LIBRARY_PATH环境变量会configure error,需要删除该变量重新configure。

$ make

$ make install_root=$TARGET_PREFIX prefix=”” install

第六步 完全安装gcc

首先,也是很重要的是去掉libc等库文件的绝对路径。

$ cd $TARGET_PREFIX/lib

备份一下。

$ cp libc.so libc.so.bk

$ gedit libc.so

将原内容

GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a AS_NEEDED ( /lib/ld.so.1 ) )

修改为

GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld.so.1 ) )

$ cp libpthread.so libpthread.so.bk

$ gedit libpthread.so

将原内容

GROUP ( /lib/libpthread.so.0 /lib/libpthread_nonshared.a )

修改为

GROUP ( libpthread.so.0 libpthread_nonshared.a )

然后可以完全编译gcc。

$ cd $PRJROOT/build-tools/build-gcc

$ ../gcc-4.6.2/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c,c++

$ make all

$ make install

注意,编译或者在qemu仿真的时候一定要指定相关库文件的路径。

完全安装gcc,$ ls $PREFIX/bin,如下图:

编译任意C文件。

$ mipsel-linux-gcc -o test test.c (注意需要设置环境变量或者source mips.sh)

$ file test

如下图:

搞定。

首先准备好arm-linux-gcc的包,比如说是arm-linux-gcc-fh.tar.gz。首先是解压缩,路径可以随便放,最好放在/opt这个目录下面。使用如下命令:tar xvzf arm-linux-gcc-fh.tar.gz(空格)C(空格/(注意这之间的空格)。然后就解压缩好了,接下来就是要修改一下配置文件了。切换到root权限,输入如下命令:vi /etc/bash.bashrc在最后面一行加入如下语句:export PATH=$PATH:/opt/***(***表示你的arm-linux-gcc这个可执行文件的路径)最后,重启一下配置文件,使用如下命令:source /etc/bash.bashrc,


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/7320925.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存