当前位置:首页 » 编程软件 » Mips环境cef编译

Mips环境cef编译

发布时间: 2023-05-15 20:40:49

A. MIPS汇编的编译环境怎么搭建,谢

1、下载binutils并解压,binutils为GNU工具集;
2、在binutils同级目录创建build文件夹
3、在build中执行命令:../binutils/configure --target=mips-elf && make && make install
4、更多编译信息可以使用../binutils/configure --help查看,一般还需要加前缀名和安装路径;编译平台为linux,或者cygwin平台执行上述命令;安装完成后,as即为汇编命令。

B. 怎么生成mips,mips64的so

运行环境: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">wstewYXV0by10b29sc6Osx9Kw5rG+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

如下图:

搞定。

C. 如何在mips架构编译docker之github源码动态编译

经过研究docker的官方编译脚步,发现本地编译也很简单,只需要在docker源码的目录下执行如下命令即可: ./hack/make.sh binary 上面这条命令就只会生成docker的二进制文件,不过肯定不会这么顺利的,执行这个命令你就会发现错误。如果第一次执行...

D. mips-linux-uclibc-gcc 怎么编译64位程序

理论上安装支持环境,之后 64 位的 gcc 编译成 32 位程序,就加 -m32 参数即可。当然还一个办法是装个 32 位的 gcc 。
另外,交叉编译也适用于 x86 架构。

不过这么编译经常会出现各种问题,所以编译 32 位的程序,最好还是用 32 位系统。
不一定重装,用 chroot 和 setarch 命令配合即可弄出一个 32 位的子系统。

E. 嵌入式linux系统开发的具体步骤_嵌入式linux系统的搭建流程和要点

第一步、建立交叉编译环境

没有交叉开发经验的读者,可能一时很难接受这个概念。首先,要明白两个概念:一般我们工作的机器,称为开发机、主机;我们制作好的系统将要放到某台机器,如手机或另一台PC机,这台机我们称为目标主机。

我们一般开发机上已经有一套开发工具,我们称之为原生开发套件,我们一般就是用它们来写程序,那么,那什么又是交叉编译环境呢?其实一点也不神秘,也就是在开发岩困机上再安装一套开发工具,这套开发工具编译出来的程序,如内核、系统工作或者我们自己的程序,是放在目标主机上运行的。

那么或许有初学者会问,直接用原生开发工具为目标主机编译程序不就完了?至少我当初是这么想的。此枣绝一般来说,我们的开发机都是X86平台,原生开发套件开发的工具,也针对X86平台,而我们的目标主机可能是PowerPC、IXP、MIPS所以,我们的交叉编译环境是针对某一类具体平台的。

一般来讲,交叉开发环境需要二进制工具程序、编译器、C链接库,嵌入式开发常用的

这三类软件是:BinutilsGuClibc

当然,GNU包含的工具套件不仅于此,你还要以根据实际需要,进行选择

第二步、编译内核

开发工具是针对某一类硬件平台,内核同样也是。这一步,我们需要用第一步中建立的工具,对内核进行编译,对于有内核编译经验的人来说,这是非常简单的;

第三步、建立根文件系统

也就是建立我们平常看到的bin、dev、proc这一大堆目录,以及一些必备的文件;

另外,我们还需要为我们的目标系统安装一些常用的工具软件,如ls、ifconfig当然,一个办法是找到这些工具的源代码,用第一步建立的交叉编译工具来编译,但是这些软件一是森姿数量多,二是某些体积较大,不适合嵌入式系统,这一步,我们一般都是用busybox来完成的,包括系统引导软件init;

最后,我们为系统还需要建立初始化的引导文件,如inittab

F. 如何设置mips-linux-gcc编译32位

编译64位程序,不一定要编译机器是64位的,但是32位机器默认安装的gcc编译环境还是不能用来编译64位程序。 编译64位程序,需要加上-m64编译器参数,默认安装的gcc已经支持该参数,但是缺少64位机器指令相关的文件,所以不能编译

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

首先你的linux系统要装QT库 然后你要编译mips还要有Mips的编译器 arm的是arm-linux-gcc mips我不熟悉 然后就可以把Qt creator下的工程拿到linux下来编译了
安装QT库需比较繁琐 你先看看网上的教程 有问题再找我吧

H. 希望大神解释一下关于汇编语言MIPS

a:.word-12

这条指令。是分配一个word类型的空间给变量a,并初始化成-12。其具体的地址,在编程的时候“不知道”。必须在整个汇编程序汇编完之后,连接,并可能“重定位”,这些变量的地址才会真正知道。

编译时,开发工具通常都会生成类似于“.map”和“.lst”之类的文件,里面会有详细的变量和函数之类的地址信息。具体文件,得查阅MIPS汇编程序开发工具的相关手册(抱歉,我手边没有)。

有问题继续交流,谢谢。

I. 编译grub2-mips启动器,制作 MIPS 架构的 grubmips64el.efi

一. 实验环境

二. grub 介皮伏拍绍

三. 在x86架构下,对grub1 与 grub2 引导阶段剖析(再去结合龙芯PMON、昆仑固件、UEFI固件分厅改析启动过程,因为龙芯固件已包含 bootloader 功能,对燃羡比分析)

四. 分区类型选择(X86情况下)

五. 制作 grubmips64el.efi

九. 参考资料

J. C或者C++转mips怎么用编译器实现谢谢!

去查编译器的帮助文档或者数据手册,这里涉及到C语言和汇编语言的相互调用问题,一般编译器都会有相关说明的,但不同编译器的调用约定或许不同

热点内容
解压专家解压迅雷云盘 发布:2025-07-14 09:11:09 浏览:910
编程基础教学 发布:2025-07-14 09:09:48 浏览:94
电脑板能进入的手机版服务器 发布:2025-07-14 09:08:10 浏览:555
roblox电脑版服务器推荐 发布:2025-07-14 09:06:07 浏览:807
application缓存 发布:2025-07-14 09:01:56 浏览:345
安卓怎么看绑定地区 发布:2025-07-14 09:01:49 浏览:85
籽岷的生存服务器IP 发布:2025-07-14 08:51:06 浏览:419
我的世界搭建tcp服务器 发布:2025-07-14 08:42:55 浏览:659
安卓jj比赛哪个版本有全记牌器 发布:2025-07-14 08:28:27 浏览:73
python脚本执行hive 发布:2025-07-14 08:26:24 浏览:489