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

i386编译环境

发布时间: 2022-08-27 01:04:15

linux下的内核编译问题 关于没有asm-i386怎么办

????????????????????????????

编译内核关 asm-i386 鸟事?
编译内核关 usr/include 鸟事?

make menuconfig 出错。
那是 menuconfig 这个字符界面所需要的环境的问题,和内核没关系。
印象里这个设置界面,需要 readline 等等的一些外部功能支持程序。
如果你有内核 config (一般放在内核源代码的根目录,名字是 .config )。
那你完全可以 cp 过来,直接 make 。不需要 make menuconfig 等等的配置过程。当然前提是你的 config 确实没问题。
(menuconfig 很难用,我都是 make xconfig 配置的,当然那时以前,这个界面需要 qt3 编译环境的支持)

真正编译内核,我要是没记错只需要 gcc + binutils + make 来配合干活而已,不需要外部的 include 文件。

Ⅱ 32位系统如何编译android4.4

方法步骤:第一步:编译Android 源代码
第二部:安装jdk
第三部:安装编译所需的工具
第四步:设置高速缓存加快编译速度
编译系统的要求
第一步:编译Android 源代码,Android官方推荐64位的ubuntu系统,最好是10.04的,对于10.10、11.10、12.04版本的ubuntu系统也是可以,但是小编一直习惯使用10.04的,所以几年来一直沿用至今
请不要使用32位的Ubuntu系统,更不要使用10.04以下的ubuntu系统,不然编译会出现很多都问题,会浪费更多的时间,有的比较难解决,对于新人来说,还不如重新安装一个64位的ubuntu系统
下面小编来说说怎么样查看当前安装好的ubuntu系统是多少位的
按照下图所示的方法打开终端,然后输入命令并执行 uname -ar,在最后输出的信息中如果有amd64或者 x86_64 字样,那么就说明是64位的系统了,否则就是32位的系统了
android4.4源码编译环境搭建
第二部:安装jdk
1jdk的安装,虽然Android官方还是有介绍,现在jdk的安装已经不支持使用添加源,然后用命令安装了,只能取java官网下载jdk,然后安装,然后将jdk的路劲添加到环境变量中,具体的安装和添加变量的方法,可以查看本文参考资料中的文档介绍,这里就不过多说明了
另外需说明的是,对于2.3版本以后的Android,需要使用jdk6,即jdk1.6,而不要使用jdk1.7的
android4.4源码编译环境搭建
2对于安装好的jdk,并且添加了环境变量,我们可以输入并执行命令java -version 来查看jdk版本,若是有类似下面的信息输入,那么说明jdk安装成功了
android4.4源码编译环境搭建
END
第三部:安装编译所需的工具
1对于10.04的系统,我们只需要安装下面这些软件工具就可以了,直接复制到终端中,然后回车执行安装就ok,安装前保持电脑正常连接网络
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
android4.4源码编译环境搭建
2对于10.10的ubuntu系统,需要先安装下面的工具软件,直接输入执行下面的命令就可以安装:
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
android4.4源码编译环境搭建
3之后使用下面的命令做一个软链接文件:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
android4.4源码编译环境搭建
4对于11.10的ubuntu系统,需要先安装下面的工具,输入并执行下面的命令:
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
android4.4源码编译环境搭建
5然后再安装这个对于11.10系统特别需要的工具
sudo apt-get install libx11-dev:i386
android4.4源码编译环境搭建
第四步:设置高速缓存加快编译速度
设置告诉缓存可以加快我们的编译速度,对于配置不是很高的电脑,最好是进行这个设置,这样可以为我们节约很多都时间
先用vi或者gedit软件打开宿主目录下的.bashrc文件,然后在文件的最后添加:
export USE_CCACHE=1
之后保存退出,重新登陆系统,使设置生效
android4.4源码编译环境搭建
2在终端中,切换到源码根目录中,然后执行下面的命令,设置ccache的大小
prebuilts/misc/linux-x86/ccache/ccache -M 50G
其实ccache就是一个执行文件,后面的-M和50G是传递给ccache的参数,表示设置50G的缓存空间,这个大小可以根据我们的时间需要来修改
注意事项:
如果觉得小编的经验还不错,请点击右边的“关注TA”和“投票TA”,以方便随时学习了解其他相关经验

Ⅲ linux 执行程序时出现cannot execute binary file怎么解决

需要检查一下这个文件是否 shell 脚本如果是shell脚本, 才可以使用 “sh ***.run”的形式执行。

如果本身是一个可执行的命令程序, 不需要使用 sh, 直接加上执行权限, 执行这个应用程序就可以 (类似 windows下的 。exe文件 )

如果不是shell脚本。

1、file 文件名

可以查看文件类型:

2、或者: more 文件名

查看文件内容是否可读文本。

3、修改权限

chmod 777 文件名。

或者: chmod a+x 文件。

如果没有权限, 需要文件属主或管理员用户(root)执行。

4、执行时注意程序路径

如果程序在当前目录下, 可以使用 ./文件名 的形式。

linux系统下遇到cannot execute binary file的问题一般有以下情况造成:

1、非root用户或者无执行权限。

2、 编译环境不同(程序由其他操作环境复制过来)对于第一种情况,采用增加执行权限即可chmod +x program对于第二种情况,建议将该程序二进制包拷贝过来,重新编译程序。

3、硬件平台与软件不一致 , 例如: 32位系统,下载了个64位的软件,结果就无法执行 如果使用 file 命令检查的结果是 data, 而不是可执行文件, 那么在这个系统平台上不能直接运行这个文件

Ⅳ 如何实现protobuf在XCODE上armv7/armv7s/i386的交叉编译 / 蓝讯

步骤一:部署protoc.exe
1)sudo su ---进入管理模式
//以下操作切换至protobuf文件夹
2)。/configure
3)make
4)make check
5)make install
此时可以查看protobuf文件夹下面的makefile文件,可以查看-build表示的本机环境以及-host表示的编译库的运行环境
我本地的-build=x86_64-apple-darwin12.3.0
-host=x86_64-apple-darwin12.3.0
(这两个参数在后续配置脚本需要用到,与后面脚步的i686-apple-darwin12.3.0以及arm-apple-darwin12.3.0后缀“arm-apple-darwin12.3.0”保持一致)
6)make distclean清理已生成的makefile,为交叉编译配置新makefile做准备
步骤二:配置交叉编译
1)执行脚本ios-build.sh,脚本内容如下:
configure_for_platform() {
export PLATFORM=$1
#export PLATFORM=iPhoneOS
echo “Platform is ${PLATFORM}”
if [ “$PLATFORM” == “iPhoneSimulator” ]; then
export ARCHITECTURE=i386
export ARCH=i686-apple-darwin12.3.0
fi
if [ “$PLATFORM” == “iPhoneOS” ]; then
export ARCHITECTURE=$2
export ARCH=arm-apple-darwin12.3.0
fi
export ARCH_PREFIX=$ARCH-
export SDKVER=“6.1”
#sdk版本号必须正确
export
DEVROOT=/Applications/Xcode.app/Contents/Developer/Platforms/${PLATFORM}.platform/Developer
export SDKROOT=“$DEVROOT/SDKs/${PLATFORM}$SDKVER.sdk”
export
PKG_CONFIG_PATH=“$SDKROOT/usr/lib/pkgconfig:$DEVROOT/usr/lib/pkgconfig”
export AS=“$DEVROOT/usr/bin/as”
export ASCPP=“$DEVROOT/usr/bin/as”
export AR=“$DEVROOT/usr/bin/ar”
export RANLIB=“$DEVROOT/usr/bin/ranlib”
#export CPP=“$DEVROOT/usr/bin/c++”
#export CXXCPP=“$DEVROOT/usr/bin/c++”
export CC=“$DEVROOT/usr/bin/gcc”
export CXX=“$DEVROOT/usr/bin/g++”
export LD=“$DEVROOT/usr/bin/ld”
export STRIP=“$DEVROOT/usr/bin/strip”
export LIBRARY_PATH=“$SDKROOT/usr/lib”
export CPPFLAGS=“”

Ⅳ ubuntu的i386平台和amd64平台区别

i386就是32位的ubuntu 如果cpu只支持32位的 不支持64位的 就下载这个
amd64就是64位的ubuntu

不要以为i386只能用于intel的cpu,amd64只能用于amd的cpu。别被字面意思所迷惑。

为什么要分i386和64位的不同版本,就是因为cpu兼容问题。所以64位的推荐使用64版本,i386的不推荐使用,否则会出现很多奇怪的问题。

觉得64位的软件比i386的少,是因为现在32位还是主流,但是在linux系统中的软件一般在编写的时候会同时照顾到i386和64位用户。

当然,在源里面的软件一般还是32位的较多一点。

可以在google或者网络里面搜索你要的软件名字+64,试试能不能找到deb包或者相应的源列表。


(5)i386编译环境扩展阅读:

32位

32位也是一种称呼计算机世代的名词,在于以32位处理器为准则的时间点。

32位可以存储的整数范围是0到4294967295,或使用二的补数是-2147483648到2147483647。因此,32位存储器地址可以直接访问4GiB以字节寻址的存储器。

外部的存储器和数据总线通常都比32位还宽,但是两者在处理器内部存储或是操作时都当作32位的数量。举例来说,Pentium Pro处理器是32位机器,但是外部的地址总线是36位宽,外部的数据总线是64位宽。32位应用程序是指那些在 32位平面地址空间(平面存储器模式)的软件。

64位

64位CPU是指CPU内部的通用寄存器的宽度为64比特,支持整数的64比特宽度的算术与逻辑运算。早在1960年代,64位架构便已存在于当时的超级计算机,且早在1990年代,就有以RISC为基础的工作站和服务器。

2003年才以x86-64和64位PowerPC处理器架构的形式引入到(在此之前是32位)个人计算机领域的主流。

一个CPU,联系外部的数据总线与地址总线,可能有不同的宽度;术语“64位”也常用于描述这些总线的大小。例如,目前有许多机器有着使用64位总线的32位处理器(如最初的Pentium和之后的CPU,但Intel的32位CPU的地址总线宽度最大为36位),因此有时会被称作“64位”。

同样的,某些16位处理器(如MC68000)指的是16/32位处理器具有16位的总线,不过内部也有一些32位的性能。这一术语也可能指计算机指令集的指令长度,或其它的数据项(如常见的64位双精度浮点数)。

去掉进一步的条件,“64位”计算机体系结构一般具有64位宽的整数型寄存器,它可支持(内部和外部两者)64位“区块”(chunk)的整数型数据。

windows下查看系统是32位还是64位的方法:

开始菜单--运行--CMD--systeminfo--系统类型--x86 pc则表示为32位系统(x64则表示为64位系统)

32位系统与64位系统的区别:

第一,设计初衷不同。64位操作系统的设计初衷是:满足机械设计和分析、三维动画、视频编辑和创作,以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的客户需求。

换句简明的话说就是:它们是高科技人员使用本行业特殊软件的运行平台。而32位操作系统是为普通用户设计的。

第二,要求配置不同。64位操作系统只能安装在64位电脑上(CPU必须是64位的)。同时需要安装64位常用软件以发挥64位(x64)的最佳性能。32位操作系统则可以安装在32位(32位CPU)或64位(64位CPU)电脑上。

当然,32位操作系统安装在64位电脑上,其硬件恰似"大牛拉小车":64位效能就会大打折扣。

第三,运算速度不同。64位CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位。

64位指令集可以运行64位数据指令,也就是说处理器一次可提取64位数据(只要两个指令,一次提取8个字节的数据),比32位(需要四个指令,一次提取4个字节的数据)提高了一倍,理论上性能会相应提升1倍。

第四,寻址能力不同。64位处理器的优势还体现在系统对内存的控制上。由于地址使用的是特殊的整数,因此一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。

32位CPU和操作系统最大只可支持4GB内存,而64位CPU和操作系统理论上最高可支持16EB内存(16777216TB)。

总而言之,64位操作系统,必须"上"靠64位主机硬件的支撑,"下"靠64位常用软件的协助,才能将64位的优势发挥到极致,"三位一体"缺一不可(道理很简单:操作系统只是承上启下的运行平台)。

至于64位电脑可以安装32位操作系统,64位操作系统可以安装32位软件,那是设计上的"向下兼容",不是64位设计初衷的本来含义。

64位——网络

Ⅵ linux 里的 "i386"是什么意思

i386是指CPU的种类,也可以指CPU的架构(architecture)。
现在的CPU一般都用“Core 2 Duo”或者“Athlon”,“Xeon”,“Opteron”之类的比较酷的名称来称呼。Linux诞生的时候,CPU作为一个重要的组件,一般用型号来称呼它。
i386的i代表Intel,是Intel公司最先生产的,从4004开始的CPU系列中,386(80386)是第一个32位的CPU。Linux刚开始就是作为386架构上兼容POSIX的内核来开发的。之后CPU的性能虽然越高,但是一直都兼容“386”架构的,所以Linux上运行的各种程序,只要在“386”上编译之后,就可以在大部分的PC上运行了。

Ⅶ 如何将/usr/include/i386-linux-gnu加入到gcc的编译路径里面

gcc用于设置编译路径的参数一共有两个:-I(大写的I,H后面的字母)和-L,分别表示:
-I:后面跟头文件目录,比如:
gcc -I/usr/include/X11 hello.c
-L:后面跟库文件目录,比如:
gcc -L/usr/openwin/lib hello.c -lX11(小写L表示库名称)
你的这个目录是头文件目录吧?就用-I参数好了。

Ⅷ 如何实现protobuf在XCODE上armv7/armv7s/i386的交叉编译

步骤一:部署protoc.exe

1)sudo su ---进入管理模式

//以下操作切换至protobuf文件夹下

2)./configure

3)make

4)make check

5)make install

此时可以查看protobuf文件夹下面的makefile文件,可以查看-build表示的本机环境以及-host表示的编译库的运行环境

我本地的-build=x86_64-apple-darwin12.3.0

-host=x86_64-apple-darwin12.3.0

(这两个参数在后续配置脚本需要用到,与后面脚步的i686-apple-darwin12.3.0以及arm-apple-darwin12.3.0后缀“arm-apple-darwin12.3.0”保持一致)

6)make distclean清理已生成的makefile,为交叉编译配置新makefile做准备

步骤二:配置交叉编译

1)执行脚本ios-build.sh,脚本内容如下:

configure_for_platform() {

export PLATFORM=$1

#export PLATFORM=iPhoneOS

echo "Platform is ${PLATFORM}"

if [ "$PLATFORM" == "iPhoneSimulator" ]; then

export ARCHITECTURE=i386

export ARCH=i686-apple-darwin12.3.0

fi

if [ "$PLATFORM" == "iPhoneOS" ]; then

export ARCHITECTURE=$2

export ARCH=arm-apple-darwin12.3.0

fi

export ARCH_PREFIX=$ARCH-

export SDKVER="6.1"
#sdk版本号必须正确

export
DEVROOT=/Applications/Xcode.app/Contents/Developer/Platforms/${PLATFORM}.platform/Developer

export SDKROOT="$DEVROOT/SDKs/${PLATFORM}$SDKVER.sdk"

export
PKG_CONFIG_PATH="$SDKROOT/usr/lib/pkgconfig:$DEVROOT/usr/lib/pkgconfig"

export AS="$DEVROOT/usr/bin/as"

export ASCPP="$DEVROOT/usr/bin/as"

export AR="$DEVROOT/usr/bin/ar"

export RANLIB="$DEVROOT/usr/bin/ranlib"

#export CPP="$DEVROOT/usr/bin/c++"

#export CXXCPP="$DEVROOT/usr/bin/c++"

export CC="$DEVROOT/usr/bin/gcc"

export CXX="$DEVROOT/usr/bin/g++"

export LD="$DEVROOT/usr/bin/ld"

export STRIP="$DEVROOT/usr/bin/strip"

export LIBRARY_PATH="$SDKROOT/usr/lib"

export CPPFLAGS=""

#export CFLAGS="-arch armv7 -fmessage-length=0 -pipe -fpascal-strings
-miphoneos-version-min=4.0 -isysroot=$SDKROOT -I$SDKROOT/usr/include
-I$SDKROOT/usr/include/c++/4.2.1/"

export CFLAGS="-arch ${ARCHITECTURE} -fmessage-length=0 -pipe
-fpascal-strings -miphoneos-version-min=4.0 -isysroot=$SDKROOT
-I$SDKROOT/usr/include -I$SDKROOT/usr/include/c++/4.2.1/"

export CXXFLAGS="$CFLAGS"

#export LDFLAGS="-isysroot='$SDKROOT' -L$SDKROOT/usr/lib/system
-L$SDKROOT/usr/lib/"

export LDFLAGS="-arch ${ARCHITECTURE} -isysroot='$SDKROOT'
-L$SDKROOT/usr/lib/system -L$SDKROOT/usr/lib/"

./configure --host=${ARCH} --with-protoc=protoc --enable-static
--disable-shared

}

mkdir ios-build

#build for iPhoneSimulator

configure_for_platform iPhoneSimulator

make clean

make

cp src/.libs/libprotobuf-lite.a ios-build/libprotobuf-lite-i386.a

#提取完整版本(i386)

cp src/.libs/libprotobuf.a ios-build/libprotobuf-i386.a

#build for iPhoneOS armv7

configure_for_platform iPhoneOS armv7

make clean

make

cp src/.libs/libprotobuf-lite.a ios-build/libprotobuf-lite-armv7.a

#提取完整版本(armv7)

cp src/.libs/libprotobuf.a ios-build/libprotobuf-armv7.a

#build for iPhoneOS armv7s

configure_for_platform iPhoneOS armv7s

make clean

make

cp src/.libs/libprotobuf-lite.a ios-build/libprotobuf-lite-armv7s.a

#提取完整版本(armv7s)

cp src/.libs/libprotobuf.a ios-build/libprotobuf-armv7s.a

make clean

#cerate a fat library containing all achitectures in libprotobuf-lite.a

xcrun -sdk iphoneos lipo -arch armv7 ios-build/libprotobuf-lite-armv7.a -arch
armv7s ios-build/libprotobuf-lite-armv7s.a -arch i386
ios-build/libprotobuf-lite-i386.a -create -output
ios-build/libprotobuf-lite.a

#合并三个完整版本(libprotobuf.a)

xcrun -sdk iphoneos lipo -arch armv7 ios-build/libprotobuf-armv7.a -arch
armv7s ios-build/libprotobuf-armv7s.a -arch i386 ios-build/libprotobuf-i386.a
-create -output ios-build/libprotobuf.a

2)将打包生成的libprotobuf-lite.a和libprotobuf.a复制至工程下进行编译,可以编译protobuf在xcode上的模拟器版本和真机版本,完成交叉编译。

Ⅸ linux发行版中的i386/i686/x86-64/有什么区别

1、i386 适用于intel和AMD所有32位的cpu.以及via采用X86架构的32的cpu。intel平台包括8086,80286,80386,80486,奔腾系列(1.2.3.4)、赛扬系列,Pentium D系列以及centrino P-M,core o 等.

2、X86_64 适用于intel的Core 2 Duo, Centrino Core 2 Duo, and Xeon 和AMD Athlon64/x2, Sempron64/x2, Duron64等采用X86架构的64位cpu。

3、I686 只是i386的一个子集,支持的cpu从Pentium 2 (686)开始,之前的型号不支持。

(9)i386编译环境扩展阅读

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。

文件系统

文件类型

普通文件(regular file):就是一般存取的文件,由ls -al显示出来的属性中,第一个属性为 [-],例如 [-rwxrwxrwx]。另外,依照文件的内容,又大致可以分为:

1、纯文本文件(ASCII):这是Unix系统中最多的一种文件类型,之所以称为纯文本文件,是因为内容可以直接读到的数据,例如数字、字母等等。设 置文件几乎都属于这种文件类型。举例来说,使用命令“cat ~/.bashrc”就可以看到该文件的内容(cat是将文件内容读出来)。

2、二进制文件(binary):系统其实仅认识且可以执行二进制文件(binary file)。Linux中的可执行文件(脚本,文本方式的批处理文件不算)就是这种格式的。举例来说,命令cat就是一个二进制文件。

3、数据格式的文件(data):有些程序在运行过程中,会读取某些特定格式的文件,那些特定格式的文件可以称为数据文件(data file)。

举例来说,Linux在用户登入时,都会将登录数据记录在 /var/log/wtmp文件内,该文件是一个数据文件,它能通过last命令读出来。但使用cat时,会读出乱码。因为它是属于一种特殊格式的文件。

热点内容
游戏库源码 发布:2025-02-07 09:49:15 浏览:53
享宇钱包上传不了照片 发布:2025-02-07 09:48:32 浏览:632
模拟器怎么开安卓版本 发布:2025-02-07 09:42:35 浏览:771
c程序设计语言源码 发布:2025-02-07 09:22:41 浏览:623
数据库域的概念 发布:2025-02-07 09:22:40 浏览:640
电信路由器账号密码多少 发布:2025-02-07 09:22:01 浏览:671
我的世界怎么在别人服务器开光影 发布:2025-02-07 09:21:20 浏览:12
qq上传视频很慢怎么办 发布:2025-02-07 09:16:04 浏览:697
pythonredis缓存 发布:2025-02-07 09:10:24 浏览:928
封边机主要看哪些配置 发布:2025-02-07 09:10:17 浏览:906