當前位置:首頁 » 編程軟體 » 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時,會讀出亂碼。因為它是屬於一種特殊格式的文件。

熱點內容
o2o與資料庫設計 發布:2025-02-07 11:35:27 瀏覽:928
ftp伺服器推薦 發布:2025-02-07 11:35:16 瀏覽:700
吉利星瑞豪華加6000是有哪些配置 發布:2025-02-07 11:25:18 瀏覽:971
李字加工編程 發布:2025-02-07 11:23:50 瀏覽:880
linux安全運維 發布:2025-02-07 11:14:19 瀏覽:737
阿里雲集群伺服器 發布:2025-02-07 11:12:38 瀏覽:453
如何選擇家庭最佳配置 發布:2025-02-07 11:06:50 瀏覽:89
javatomcat伺服器搭建伺服器 發布:2025-02-07 10:55:22 瀏覽:624
vcenter存儲器集群 發布:2025-02-07 10:54:31 瀏覽:585
咖啡的腳本 發布:2025-02-07 10:46:18 瀏覽:523