当前位置:首页 » 编程软件 » mipsel交叉编译

mipsel交叉编译

发布时间: 2023-01-21 04:24:55

⑴ 怎样使用交叉编译器编译单个C文件

$CC filename.c -o filename

⑵ 请问如何编译mipsel构架的aria2 ipk

下面mipsel的交叉编译工具,然后下载想要编译的源码,然后修改默认的编译器,改成交叉编译的,之后make

⑶ 如何交叉编译perl

  • 先下载Perl源码:https://www.perl.org/get.html , 下载版本是5.10.1

  • 下载Perl交叉编译源码补丁: https://sourceforge.net/projects/perlcross.berlios/files/, 下载版本是:perl-5.10.0-cross-0.3.tar.gz

  • 分别解压连个文件到同一个目录下;


  • 1

  • 在ubuntu中安装 perlbrew:

  • sudo apt-get install perlbrew
    perlbrew init
    source ~/perl5/perlbrew/etc/bashrc
    perlbrew install perl-5.10.1
  • 2

  • 3

  • 4

  • 5

  • 等待perlbrew安装完毕;


  • 2

  • 3

  • 1

  • 合并 两个解压出来的perl目录,进入perl-5.10.1的Cross目录中:

  • cp -rfv perl-5.10.0/* perl-5.10.1/
    cd perl-5.10.1/Cross


  • 2

  • 1

  • 文件内容如下注意加了星号的内容:

  • ### Target Arch
    ** ARCH = arm **
    #ARCH = i386-pc
    #ARCH = sh4
    #ARCH = mips
    #ARCH = mipsel
    #ARCH = ppc

    ## Specific arm
    **#CONFIG_TARGET_ARM_SA11X0 = 1**
    #CONFIG_TARGET_ARM_XSCALE = 1

    ### Target OS
    **OS = linux**
    #OS = solaris2.8
  • 1

  • 修改perl的config文件

  • gedit Cross/config ##或者 vi gedit Cross/config
  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 上面加粗字体表示注意的或者修改的;

  • 修改当前目录(Cross目录)中的Makefile文件:
    先改变一下目录内容的权限:
    chmod 777 /Cross/*

  • 修改的Makefile文件内容:

  • export TOPDIR=${shell pwd}

  • include $(TOPDIR)/config

  • export CFLAGS

  • ** export SYS=arm-linux **

  • ** export CROSS=/stuff/bitbake/bin/tmp/sysroots/i686- linux/usr/armv7a/bin/arm-angstrom-linux-gnueabi- **

  • ** export LD_LIBRARY=/stuff/bitbake/bin/tmp/sysroots/i686-linux/usr/lib:$(LD_LIBRARY_PATH) **

  • export FULL_OPTIMIZATION = -fexpensive-optimizations -fomit-frame-pointer -O2

  • export OPTIMIZATION = -O2


  • export CC = arm-angstrom-linux-gnueabi-gcc

  • export CXX = arm-angstrom-linux-gnueabi-g++

  • export LD = arm-angstrom-linux-gnueabi-ld

  • export STRIP = arm-angstrom-linux-gnueabi-strip

  • export AR = arm-angstrom-linux-gnueabi-ar

  • export RANLIB = arm-angstrom-linux-gnueabi-ranlib

  • 12345678910111213141516

  • make CC=arm-angstrom-linux-gnueabi-gcc ARCH=arm patch

  • make CC=arm-angstrom-linux-gnueabi-gcc ARCH=arm perl

  • 编译会出错,但是没关系,会在根目录生成perl可执行文件;

⑷ 交叉编译zlib出错

$ export CC=mipsel-linux-gcc
$ ./configure --prefix=/opt --shared
$ make CC=mipsel-linux-gcc
$ make install

ps:此处的环境CC=mipsel-linux-gcc 记得换回来!

⑸ [求助][急!!]php和iconv库交叉编译的问题

可以在-with-iconv-dir= 后面接上你的iconv安装路径 比如 --with-iconv-dir=/usr/local/iconv

⑹ 如何构建MIPS交叉编译工具链

运行环境: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-mole文件夹,在mips-mole文件夹下创建三个文件夹:build-tools,kernel,tools,最后,在build-tools文件夹下创建build-gcc,build-boot-gcc,build-glibc,build-binutils文件夹。命令如下:
$ cd ~
$ mkdir -p ./target-project/mips-mole/{kernel/,tools/,build-tools/{build-gcc,build-boot-gcc,build-glibc,build-binutils}}
$ tree ./target-project/mips-mole/

观察目录结构,如下图:

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

注意修改/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">+bGFzcz0="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

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:710
制作脚本网站 发布:2025-10-20 08:17:34 浏览:972
python中的init方法 发布:2025-10-20 08:17:33 浏览:681
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:833
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:740
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1080
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:311
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:191
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:878
python股票数据获取 发布:2025-10-20 07:39:44 浏览:835