導航:首頁 > 源碼編譯 > 交叉編譯安裝系統庫

交叉編譯安裝系統庫

發布時間:2022-04-01 23:50:26

㈠ 如何建立linux系統下交叉編譯環境

基於Linux操作系統的應用開發環境一般是由目標系統硬體(開發板)和宿主PC機所構成。目標硬體開發板用於運行操作系統和系統應用軟體,而目標板所用到的操作系統的內核編譯、應用程序的開發和調試則需要通過宿主PC機來完成(所以稱為交叉編譯)。雙方之間一般通過串口,並口或乙太網介面建立連接關系。 但在此我建議構建如下的交叉編譯環境,適合個人或研發小組使用:單獨拿出一台PC機(PII以上即可,就用以前淘汰的舊機器就可以),在該PC上安裝桌面的Linux操作系統(如Red Hat Linux 8.0及以上),可以採用默認的安裝選項(注意要包含FTP服務),這台PC作為Linux伺服器,除管理員以外,一般不直接讓其他人去操作。 將該Linux伺服器接入區域網,並新建一些合法用戶,以便其他的PC機(在此我們將其稱為工作站)的合法用戶能訪問到Linux伺服器。而其他的PC機(工作站)仍然使用Windows操作系統,原來幹啥繼續幹啥。 需要的軟體工具包括: 1、FTP客戶端程序(如Cuteftp,可到網上下載)。 2、Telnet工具(如SecureCRT,可到網上下載)。 3、移植到某一特定ARM平台的Linux操作系統內核源碼(一般由銷售商整理提供)。

㈡ 搭建linux交叉編譯環境必須安裝linux操作系統嗎

Windows下有sygwin,有些晶元廠家會提供sygwin的交叉編譯工具鏈。

㈢ 求助,開始安裝系統時gcc是能用的,後來裝了交叉編譯的arm-unknown-linux-gcc,就出問題了

考慮可能是gcc 出問題了,結果使用man gcc
查看是不是有此命令。出人意料的是沒發現gcc 命令。不知出了什麼問題,感覺不應該出這樣的問題呀,這不是系統自帶的嗎?再三找原因,到論壇上發個帖子問了問老師,才發現fc6安裝的時候必須定製這些安裝包,不能按默認安裝否則會少裝好多文件。

於是想個解救的方法吧,到網上查了好多資料,也下了好幾個安裝包,不過按網上的說明一步一步安裝,到最後都會出錯。

具體步驟如下:安裝之前,必須保證系統中有cc或者gcc等編譯器,並且是可用的,或者用環境變數CC指定系統上的編譯器。如果系統上沒有編譯器,不能安裝源代碼形式的GCC 3.3.1情況,可以在網上找一個與你系統相適應的如RPM等二進制形式的GCC軟體包來安裝使用。本文介紹的是以源代碼形式提供的GCC軟體包的安裝過程,軟體包本身和其安裝過程同樣適用於其它Linux和Unix系統。

系統上原來的GCC編譯器可能是把gcc等命令文件、庫文件、頭文件等分別存放到系統中的不同目錄下的。與此不同,現在GCC建議我們將一個版本的GCC安裝在一個單獨的目錄下。這樣做的好處是將來不需要它的時候可以方便地刪除整個目錄即可(因為GCC沒有uninstall功能);缺點是在安裝完成後要做一些設置工作才能使編譯器工作正常。在本文中我採用這個方案安裝GCC 3.3.1在安裝完成後,仍然能夠使用原來低版本的GCC編譯器,即一個系統上可以同時存在並使用多個版本的GCC編譯器。

㈣ 怎樣使用linux根文件系統的lib庫交叉編譯

一般交叉編譯器里都有一個lib的文件夾的,把你的lib文件cp到這里應該就可以了。也可以用gcc帶的-L,例如:arm-linuc-gcc -L/root/lib xx.c -o xx.o

㈤ Linux系統中如何安裝交叉編譯器

交叉編譯器通常以 arm-none-linux-gnueabi.tar.bz2 這樣的名稱發布(不同廠家的不同開發平台,交叉編譯工具鏈的實際名稱可能有所差別,請以實際為准),解壓命令:
vmuser@Linux-host: ~$ tar xjvf arm-none-linux-gnueabi.tar.bz2
如果希望解壓到一個指定的目錄,可以先將 arm-none-linux-gnueabi.tar.bz2 壓縮包復制到目標目錄,然後進入目標目錄再運行解壓命令,也可以在任意目錄解壓,通過-C 指定目標目錄。假定希望解壓到「/home/ctools/」目錄,則命令如下:
vmuser@Linux-host: ~$ tar xjvf arm-none-linux-gnueabi.tar.bz2 -C /home/ctools/

在終端中添加環境變數,需要每次打開終端都設置,也很麻煩。可以考慮將設置的過程添加到系統配置文件中。/etc/profile 是系統全局的配置文件,在該文件中設置交叉編譯器的路徑,能夠讓登錄本機的全部用戶都可以使用這個編譯器。
打開終端,輸入「sudo vi /etc/profile」命令,打開/etc/profile 文件,在文件末尾添加:
export PATH=$PATH:/home/ctools/arm-2011.03/bin/
然後輸入「. /etc/profile」(點+空格+文件名),執行 profile 文件,使剛才的改動生效。如果沒有書寫錯誤,此時打開終端,輸入 arm-none-linux-gnueabi-,然後按鍵盤 TAB 鍵,同樣可以看到很多 arm-none-linux-gnueabi-開頭的命令。
這些周立功那邊很多的,不知道你有沒去看過。

㈥ Linux安裝uclibc交叉編譯工具鏈的步驟如要將原先的glibc卸載嗎

……肯定不能卸載原來的glibc,卸了之後整個系統都不能用了
你要編譯的uclibc是linux->arm的和arm->arm的,glibc是給linux->linux用的

㈦ gcc交叉編譯怎麼找頭文件及lib庫的

是在specs裡面讀取的路徑信息。
命令行中鍵入 gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /usr/build/package/orig/test.respin/gcc-3.4.4-3/configure --ver
bose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libe
xecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-langu
ages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --
enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-
awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-thre
ads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptio
ns --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)

注意「--prefix=/usr」 以及「--libdir=/usr/lib 」
表示gcc ld as 等可執行文件安裝在/usr/bin,而libc.a 等文件是在/usr/lib中。
解壓縮交叉編譯器時,也是要解壓縮在在--prefix 指定的目錄下。
比如 下載了arm-linux 的交叉編譯器cross-3.3.2.tar.bz2,解壓縮之後,運行 arm-linux-gcc -v
得到 --prefix=/usr/local/arm。那麼就要把 bin lib 等所有的文件和文件夾到/usr/local/arm目錄下。
否則到時候運行arm-linux-gcc hello.c會提示找不到stdio.h 或者 lib.so.6 等

HOWTO Use the GCC specs file

About Specs file
The "gcc" program invoked by users is a convenient front-end driver executable which will invoke other programs in the background such as cc1, as or ld to do its work according to the command line parameter given. A specs file is plain text used to control the default behavior for the "gcc" front-end. The specs file is usually built-in but for flexibility purposes, it can be overridden with an external version.
Basic Specs file modifications
CC will proce a specs file via the following command.
gcc -mpspecs > specs
You may use a text editor of your choice to inspect it. It may be confusing at first, but there are many places of interest. To use the specs file, invoke gcc with -specs= or place it at "/mingw/lib/gcc/mingw32//specs" to make GCC use it by default, where refers to the GCC version installed.
Adding include directories to the search path
& #160;he *cpp: section should be modified. It contains the following by default:
*cpp:
%{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT}
If "z:\libx\include" needs to be added to the GCC includes search path, it should be changed to the following
*cpp:
%{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} -I/z/libx/include
Adding lib directories to the search path
& #160;he *link_libgcc: section should be modified. It contains the following by default:
*link_libgcc:
%D
& #160;f "z:\libx\lib" needs to be added to the GCC library search path, it should be changed to the following
*link_libgcc:
%D -L/z/libx/lib

㈧ 如何安裝arm-liunx交叉編譯環境

sh ./arm-elf-tools-20040427.sh安裝
----------------------------------------------
一、准備工作

首先需要一台運行Linux操作系統的PC以完成我們的編譯工作。

其次要准備如下一些源文件。

1、源文件准備

binutils-2.14.tar.gz

ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz

gcc-core-2.95.3.tar.gz

ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz

gcc-g++2.95.3.tar.gz

ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-g++-2.95.3.tar.gz

glibc-2.2.4.tar.gz

ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.4.tar.gz

glibc-linuxthreads-2.2.4.tar.gz

ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.4.tar.gz

linux-2.4.21.tar.gz

ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz

patch-2.4.21-rmk1.gz # linux kernel patch for arm

ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz

binutils-2.14.tar.gz這個壓縮包包含有ld,ar,as等一些產生或者處理二進制文件的工具。

gcc-core-2.95.3.tar.gz這個壓縮包是GCC的主體部分,GCC是GNU Compiler Collection的簡稱,顧名思義,它能夠編譯很多種高級語言,例如C、C++,Java等,而這個壓縮包中含有C編譯器,及公共部分,而對其他語言的支持,採用另外的壓縮包單獨發布。

gcc-g++2.95.3.tar.gz,這個壓縮包就是為使GCC能夠編譯C++程序而單獨發布的。

glibc-2.2.4.tar.gz,libc是很多用戶層應用都要用到的庫,kernel和bootloader不需要這個庫的支持,這個庫主體部分封裝在這個壓縮包內。

glibc-linuxthreads-2.2.4.tar.gz,這是Libc用於支持Posix線程而單獨發布的一個壓縮包。

linux-2.4.21.tar.gz,這個壓縮包就是Linux的內核。

patch-2.4.21-rmk1.gz,這個壓縮包是用來給Linux內核打補丁,以使其可以支持ARM的硬體平台。

2、工作目錄搭建

我們創建如下的目錄樹結構

mkdir arm

mkdir tool-chain

mkdir build-dir

mkdir src-dir

mkdir setup-dir

mkdir kernel

arm這個目錄是我們的最頂層工作目錄,我們所有的編譯工作都在這里完成。

tool-chain這個目錄是我們交叉編譯工具的安裝位置,它下面的bin子目錄存放我們創建好的編譯器,匯編器,連接器,以及編譯好的C庫也會安裝到這個目錄之下。

setup-dir這個目錄用來存放我們下載的壓縮包。

src-dir這個目錄用於存放binutils,gcc,glibc解壓之後的源文件。

kernel這個目錄用來存放內核文件,對內核的配置、編譯工作將在這個目錄中完成。

build-dir用來編譯src-dir中的源文件,具體就是binutils,gcc,glibc的編譯工作將在這個目錄下完成。這種源文件目錄和編譯目錄分離的編譯方式是GNU所推薦的。

cd ./src-dir

tar –xvzf ../setup-dir/ binutils-2.14.tar.gz

tar –xvzf ../setup-dir/ gcc-core-2.95.3.tar.gz

tar –xvzf ../setup-dir/ glibc-2.2.4.tar.gz

tar –xvzf ../setup-dir/ glibc-linuxthreads-2.2.4.tar.gz –directory=./glibc-2.2.4

這樣我們在src-dir目錄下就形成了3個源文件目錄binutils-2.14,gcc-core-2.95,3,glibc-2.2.4,其中分別存放著binutils tools,gcc,glibc的源代碼。接下來我們到build-dir中創建3個與這三個源文件目錄對應的編譯目錄。

cd ../build-dir

mkdir ../build-dir/build-binutils

mkdir ../build-dir/build-gcc

mkdir ../build-dir/build-glibc

我們將在這三個目錄中完成對binutils tools, gcc, glibc的配置和編譯工作。下面還要把內核文件解壓到kernel目錄下,並打補丁。

cd ../kernel

tar –xvzf ../setup-dir/ linux-2.4.21.tar.gz

cd ./linux-2.4.21

patch –p1 < ../../setup-dir/ patch-2.4.21-rmk1

二、開始創建

1、 確定幾個系統變數

cd ../../

export TARGET=arm-linux

export PREFIX=../arm/tool-chain

export TARGET_PREFIX=$PREFIX/$TARGET

export KERNEL_SOURCE_LOCATION=../arm/kernel/linux-2.4.21

export PATH=$PREFIX/bin:$PATH

幾個系統變數經常要用到,TARGET定義了目標機,PREFIX是工具鏈的安裝目錄,KERNEL_SOURCE_LOCATION是內核文件位置。

TARGET這個變數對於ARM體系的目標機來說取值為arm-linux,對於其他體系結構的機器如ppc,mips的取值的詳細清單可以參見glibc目錄下的INSTALL文檔.

2、 創建binutils

運行如下命令來創建binutils

cd ./build-dir/build-binutils

configure ../../src-dir/binutils-2.14/configure –target=$TARGET –prefix=$PREFIX

make

make install

這時$PREFIX/bin下創建了一些文件,包括arm-linux-ld,arm-linux-as等。

3、 編譯內核

cd ../../kernel/linux-2.4.21

改Makefile文件使

ARCH = arm

CROSS_COMPILE=arm-linux-

make menuconfig

在System Types中選擇正確的硬體類型

make dep

之後執行如下操作

mkdir $TARGET_PREFIX/include

cp dR $KERNEL_SOURCE_LOCATION/include/arm-asm \

RGET_PREFIX/include/asm

cp dR $KERNEL_SOURCE_LOCATION/include/linux \

RGET_PREFIX/include/linux

4、 創建boot-trap gcc,這個GCC沒有glibc庫的支持,所以只能用於編譯內核,bootloader等,後面創建C庫也要用到這個編譯器,所以創建它主要是為創建C庫做准備,如果只想編譯內核和bootloader那麼,就可以到此結束。

cd ../../build-dir/build-gcc

../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX \

--with-headers=$ERNEL_SOURCE_LOCATION/include –enable-language=c \

--disable-threads

然後修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在

TARGET_LIBGCC2_CFLAGS中添加如下兩個定義

-Dinhibit-libc –D__gthr_posix_h

make

make install

這時$PREFIX/bin下創建了一些文件,主要創建了arm-linux-gcc。

5、 創建gblic

cd ../build-glibc

export CC=arm-linux-gcc

../../src-dir/glibc-2.2.4/configure –host=$TARGET –prefix=$TARGET_PREFIX \

--enable-add-ons

make

make install

將glibc庫安裝完之後,我們要到$TARGET_PREFIX/lib這個目錄下修改libc.so文件,將其中

GROUP(/lib/libc.so.6 /lib/libc_noshared.a)

這個命令腳本中的/lib 的絕對路徑去掉, 也就是改為如下的形式

GROUP(libc.so.6 libc_noshared.a)

這樣下一步創建完整的編譯器時,才不至於導致錯誤.

6、 創建功能健全的GCC,並創建G++

在成功創建了libc之後,我們就可以創建功能豐富的GCC編譯器了,並且可以創建支持編譯C++程序的G++。

cd ../../src-dir

tar –xvzf ../setup-dir/ gcc-g++2.95.3.tar.gz

cd ../build-dir/build-gcc

export CC=gcc

../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX \

–enable-language=c,c++

然後修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在

TARGET_LIBGCC2_CFLAGS中去除如下兩個定義

-Dinhibit-libc –D__gthr_posix_h

make

make install

7,至此我們成功的創建了ARM Linux的交叉編譯工具。

------------------------------------------------------
可以去www.arm16.com看看

㈨ 為什麼交叉編譯器要安裝在Linux系統下

交叉編譯就是 在A機器上利用編譯工具把代碼生成可以再B機器上運行。交叉編譯就是這個功能,因為如果你在電腦上生成的代碼知識適合於電腦運行的代碼,如果你放在一個開發板上,是不能運行的,因為開發板的硬體與電腦的硬體很不同,所以需要交叉編譯工具來編譯,使代碼能在開發板上運行

閱讀全文

與交叉編譯安裝系統庫相關的資料

熱點內容
android序列化文件 瀏覽:249
java泛型for 瀏覽:29
html保存pdf 瀏覽:211
單片機畢業論文摘要 瀏覽:666
安卓機如何關閉閃付 瀏覽:518
pdf標注app 瀏覽:484
編譯原理的前端和後端的意義 瀏覽:395
德陽程序員招聘 瀏覽:801
javaascii轉中文 瀏覽:889
酷狗app在哪裡點自己唱 瀏覽:202
ios15輕量版app怎麼刪除 瀏覽:564
dos下載命令行 瀏覽:748
蘋果文件加密後打不開 瀏覽:279
單片機握手失敗 瀏覽:394
中國聯通app怎麼查每月實時話費 瀏覽:463
linuxatlas 瀏覽:483
webcamandroid 瀏覽:71
友友車友軟體免加密 瀏覽:97
java多進程編程 瀏覽:905
12864液晶與單片機的連接 瀏覽:28