❶ ubuntu12.04編譯交叉編譯已經安裝,為什麼還不能編譯
1、解壓交叉編譯開發工具包
sudo
tar
xvzf
arm-linux-gcc-4.4.3.tar.gz
-C
/
解壓工具鏈到根目錄,這里的解壓目錄可以任意指定。系統中會增加目錄/opt/FriendlyARM/toolschain/4.4.3/
2、修改環境變數,把交叉編譯器的路徑加入到PATH
採用修改/etc/bash.bashrc文件的方法(還可有別的方法)
①用vim打開文件:
#sudo
vim
/etc/bash.bashrc
②在最後面新建一行加上:
export
PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
3、立即使新的環境變數生效,不用重啟電腦:
#source
/etc/bash.bashrc
{
這是上面修改環境變數的另一種方法
①
$sudo
-i
輸入自己的密碼,這是進入超級用戶許可權
②
cd
/root/
vim
.bashrc
③
在最後加上
export
PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
(路徑)(注意等號那邊不要有空格)
④
source
~/.bashrc
(立即生效)
(好像只能本終端,注銷一下就永遠都有這個環境變數的)
}
4、檢查是否將路徑加入到PATH
#echo
$PATH
若顯示的內容中有剛剛添加的交叉編譯器所在目錄,則證明編譯環境安裝成功。
5、測試是否安裝成功
指令:#arm-linux-gcc
-v
上面的指令會顯示arm-linux-gcc信息和版本,顯示的內容信息:
此時,證明安裝成功。
6、編譯實驗
寫個HelloWorld程序,測試交叉工具連
寫下下面的HelloWorld程序,保存為hello.c
#include
int
main()
{
printf(「HelloWorld!\n」);
return0;
}
執行下面的指令:
#arm-linux-gcc-o
hello
hello.c
要是不報錯說明安裝成功。
❷ Linux安裝uclibc交叉編譯工具鏈的步驟如要將原先的glibc卸載嗎
……肯定不能卸載原來的glibc,卸了之後整個系統都不能用了
你要編譯的uclibc是linux->arm的和arm->arm的,glibc是給linux->linux用的
❸ sdcc版是啥意思
SDCC(Small Device C Compiler)是一個優化的 ANSI - C交叉編譯器,目標CPU為基於Intel 8051, Maxim 80DS390, Zilog Z80 和Motorola 68HC08 的單片機。
SDCC同時帶有一個源代碼級調試工具SDCDB,使用的是Daniel's s51模擬器當前版本。SDCC是由Sandeep Dutta 所寫的,並依據GPL license 發行。
sdcc的特點:
1、SDCC的sdas和sdld 是基於ASXXXX的交叉編譯工具和鏈接工具,他們都是免費開源的軟體,依據GNU General Public License (GPL) 發布。
2、有針對特定MCU的編程語言擴展,可以高效的使用基本的硬體資源。
3、有大量的標准優化,如全局字表達式削減,循環優化(無任何操作的循環優化,歸納變數循環優化,逆循環優化), 常量合並的傳播,復制傳播,死代碼刪除, 'switch'語句的轉移表優化。
4、針對特定MCU的優化,包括全局寄存器分配演算法。
5、特定MCU後端適應能力,能夠很好的適配其他的8位的MCU。
(3)交叉編譯工具如何卸載擴展閱讀:
交叉編譯出現和流行是和嵌入式系統的廣泛發展同步的。常用的計算機軟體,都需要通過編譯的方式,把使用高級計算機語言編寫的代碼(比如C代碼)編譯(compile)成計算機可以識別和執行的二進制代碼。
比如,在Windows平台上,可使用Visual C++開發環境,編寫程序並編譯成可執行程序。這種方式下,我們使用PC平台上的Windows工具開發針對Windows本身的可執行程序,這種編譯過程稱為native compilation,中文可理解為本機編譯。
然而,在進行嵌入式系統的開發時,運行程序的目標平台通常具有有限的存儲空間和運算能力,比如常見的 ARM 平台,其一般的靜態存儲空間大概是16到32MB,而CPU的主頻大概在100MHz到500MHz之間。
這種情況下,在ARM平台上進行本機編譯就不太可能了,這是因為一般的編譯工具鏈(compilation tool chain)需要很大的存儲空間,並需要很強的CPU運算能力。
為了解決這個問題,交叉編譯工具就應運而生了。通過交叉編譯工具,我們就可以在CPU能力很強、存儲空間足夠的主機平台上(比如PC上)編譯出針對其他平台的可執行程序。
要進行交叉編譯,要在主機平台上安裝對應的交叉編譯工具鏈(cross compilation tool chain),然後用這個交叉編譯工具鏈編譯我們的源代碼,最終生成可在目標平台上運行的代碼。
❹ Qt交叉編譯遇到的問題
QT相關的安裝軟體包:
(1) tmake-1.13.tar.gz (編譯工具,如progen與tmake)
(2) qt-embedded-2.3.7.tar.gz (提供了qte的庫)
(3) qt-x11-2.3.2.tar.gz (為了生成相應的QT工具,如designer和qvfb等)
(4) qtopia-free-1.7.0.tar.gz (QTE的桌面環境程序)
(5) cross-3.3.2.tar.bz2 (交叉編譯工具)
一、安裝工具
1 安裝 tmake
在 Linux 命令模式下運行以下命令:
tar xfz tmake-1.11.tar.gz
export TMAKEDIR=$PWD/tmake-1.11
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
export PATH=$TMAKEDIR/bin:$PATH
2 安裝 Qt/Embedded 2.3.7
在 Linux 命令模式下運行以下命令:
tar xfz qt-embedded-2.3.7.tar.gz
cd qt-2.3.7
export QTDIR=$PWD
export QTEDIR=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure –qconfig local–qvfb -depths 4,8,16,32
make sub-src
cd ..
上述命令 ./configure -qconfig -qvfb -depths 4,8,16,32 指定 Qt 嵌入式開發包生成虛擬緩沖幀工具qvfb,並支持 4,8,16,32 位的顯示顏色深度。另外我們也可以在 configure 的參數中添加-system-jpeg 和 gif,使 Qt/Embedded 平台能支持 jpeg、gif 格式的圖形。
上述命令 make sub-src 指定按精簡方式編譯開發包,也就是說有些 Qt 類未被編譯。Qt 嵌入式開發包有 5種編譯范圍的選項,使用這些選項,可控制 Qt 生成的庫文件的大小,但是您的應用所使用到的一些 Qt 類將可能因此在 Qt 的庫中找不到鏈接。編譯選項的具體用法可運行./configure -help 命令查看。
在這一過程的configure中出現了問題:有一個變數沒有聲明,發現是少了一個頭文件,加上即可,make順利通過,看到了enjoy!
3 安裝 Qt/X11 2.3.2
在 Linux 命令模式下運行以下命令:
tar xfz qt-x11-2.3.2.tar.gz
cd qt-2.3.2
export QTDIR=$PWD
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure -no-opengl
make
make -C tools/qvfb
mv tools/qvfb/qvfb bin
cp bin/uic $QTEDIR/bin
cd ..
根據開發者本身的開發環境,也可以在 configure 的參數中添加別的參數, 比如-no-opengl 或-no-xfs,可以鍵入./configure -help 來獲得一些幫助信息。
在這個安裝過程中也出現了很多錯誤,典型的就是在make過程中:
/usr/local/qt-2.3.2/include/qvaluestack.h:57: error: cannot convert 'QValueListIterator<QMap<QString, QString> >' to 'const char*' for argument '1' to 'int remove(const char*)'
/usr/local/qt-2.3.2/include/qvaluestack.h: In member function 'T QValueStack<T>::pop() [with T = QString]':
xml/qxml.cpp:2502: instantiated from here
/usr/local/qt-2.3.2/include/qvaluestack.h:57: error: cannot convert 'QValueListIterator<QString>' to 'const char*' for argument '1' to 'int remove(const char*)'
make[2]: *** [xml/qxml.o] Error 1
make[2]: Leaving directory `/usr/local/qt-2.3.2/src'
make[1]: *** [sub-src] Error 2
make[1]: Leaving directory `/usr/local/qt-2.3.2'
make: *** [init] Error 2
這個錯誤是說,在文件qvaluestack.h的57行出錯。改正方法是修改文件qt-2.3.2/ include/qvaluestack.h的 第57行,將remove( this->fromLast() );改為 this->remove( this->fromLast() );
修改時可能要更改文件許可權,變成可寫的,chmod 666 qvaluestack.h。然後make順利通過,看到了enjoy。
二、交叉編譯 Qt/Embedded 的庫
開發居於 Qt/Embedded 的應用程序要使用到 Qt/Embedded 的庫,編寫的 Qt 嵌入式應用程序最終是在YLE270開發板上運行的,因此在把 Qt 嵌入式應用程序編譯成支持 YLE270 的目標代碼之前,需要兩樣東西,一個是 arm9 的 linux 編譯器,另一個是經 arm9 的linux 編譯器編譯過的 Qt/Embedded 的庫。安裝交叉編譯工具 cross-3.3.2 前面已經安裝過了。
這一步主要是配置 Qt/Embedded2.3.7 的安裝,Qt/Embedded 的安裝選項有很多個,您可以在命令行下直接輸入「./configure」來運行配置,這時安裝程序會一步一步提示你輸入安裝選項。您也可以在「./configure」後輸入多個安裝選項直接完成安裝的配置。在這些選項中有一個選項決定了編譯 Qt/Embedded 庫的范圍,即可以指定以最小,小,中,大,完全 5 種方式編譯 Qt/Embedded 庫。另外 Qt/Embedded 的安裝選項還允許我們自己定製一個配置文件,來有選擇的編譯 Qt/Embedded 庫,這個安裝選項是「-qconfig local」 ;當我們指定這個選項時,Qt/Embedded庫在安裝過程中會尋找qt-2.3.7/src/tools/qconfig-local.h 這個文件,如找到這個文件,就會以該文件裡面定義的宏,來編譯鏈接 Qt/Embedded 庫。
具體過程如下:
cd qt-2.3.7
export QTDIR=$PWD
export QTEDIR=$QTDIR
make clean
./configure –xplatform linux-arm-g++ -shared –debug (接下行)
-qconfig local -qvfb -depths 4,8,16,32
make
cd ..
在make中出現了錯誤,有變數沒有聲明,原來是優龍公司為了避免初學者在一開始就直接接觸到 Qt/Embedde 的復雜的宏編譯選項,把這些宏定義到一個名為 qconfig-local.h的安裝配置文件中,在安裝 Qt/Embedded 的時候,需要把這個文件復制到 Qt/Embedded 的安裝路徑的/src/tools 子路徑下,
cp /配置文件所在路徑/qconfig-local.h ./src/tools
make順利通過,看到了enjoy。
最後就可以在命令行下輸入make 命令對整個工程進行編譯鏈接了,在這里,要把過程中產生的文件放在同一個文件夾裡面,方便應用。
在最後make完畢以後我還是遇到了一個問題,就是生成的可執行文件不能運行,運行時提示:./hello cannot execute binary file,當然不能直接在自己的主機上運行了,因為生成的二進制文件要下到板子上運行的。接上液晶屏,板子上電,把生成的可執行文件下載到板子上,要chmod一下,不然許可權不夠,終於在液晶屏上看到了自己弄的小程序,好開心!
三、添加一個 Qt/Embedded 應用到 QPE
以hello,world!為例
1 在工作的機器上解包 qtopia
tar zxvf qtopia-free-1.7.x.tar.gz
cd qtopia-free-1.7.x
export QTDIR=$QTEDIR
export QPEDIR=$PWD
export PATH=$QPEDIR/bin:$PATH
注意在上面已經設定環境變數 QPEDIR 為 QPE 的安裝(解包)路徑。
2 建立 Hello,World 的例子程序的圖標文件
方法是:製作一個 32 X 32 大小的 PNG 格式的圖標文件,將該文件存放在$QPEDIR/pics/inline 目錄下,然後使用以下命令將$QPEDIR/pics/inline 目錄下的所有圖形文件轉換成為一個 c 語言的頭文件,這個頭文件包含了該目錄下的圖形文件的 rgb 信息。
qembed --images $QPEDIR/pics/inline/*.*
> $QPEDIR/src/libraries/qtopia/inlinepics_p.h
3 交叉編譯 qtopia
在$QPEDIR 路徑下,運行以下命令
cd src
./configure –platform linux-arm-g++
make
cd ..
在這一過程中也出現了比較大的錯誤,在make的時候又出現了error,是resource.cpp的174行的變數qembed_findImage沒有聲明,考慮到以前遇到的情況,推斷可能是少了某個頭文件,但是又不知道是哪一個,google了很久都沒有找到解決辦法,沒辦法只好點開src/libraries/qtopia下面的每一個頭文件看了一遍,還是沒有發現有含有這個變數的文件,繼續google,然後發現了inlinepics_p.h中包含qembed_findImage,於是vi /usr/local/qtopia-free-1.7.0/src/libraries/qtopia/inlinepics_p.h,發現inlinepics_p.h是空白的,原來是
qembed --images $QPEDIR/pics/inline/*.*
> $QPEDIR/src/libraries/qtopia/inlinepics_p.h
出了錯誤,重新操作一遍這一步,再查看inlinepics_p.h,發現正常了,要繼續交叉編譯qtopia:
make clean
./configure –platform linux-arm-g++
❺ 如何更改ubuntu中交叉編譯工具鏈
1.下載arm-linux-gcc-3.4.1.tar.bz2到任意的目錄下,我把它下載到了我的個人文件夾里 /home/wrq
2. 解壓 arm-linux-gcc-3.4.1.tar.bz2
#tar -jxvf arm-linux-gcc-3.4.1.tar.bz2
解壓過程需要一段時間,解壓後的文件形成了 usr/local/ 文件夾,進入該文件夾,將arm文件夾拷貝到/usr/local/下
# cd usr/local/
#cp -rv arm /usr/local/
現在交叉編譯程序集都在/usr/local/arm/3.4.1/bin下面了
3. 修改環境變數,把交叉編譯器的路徑加入到PATH。(有三種方法,強烈推薦使用方法一)
方法一:修改/etc/bash.bashrc文件
#vim /etc/bash.bashrc
在最後加上:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
export PATH
方法二:修改/etc/profile文件:
# vim /etc/profile
增加路徑設置,在末尾添加如下,保存/etc/profil文件:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
4. 立即使新的環境變數生效,不用重啟電腦:
對應方法一:#source /root/.bashrc
對應方法二:# source /etc/profile
5. 檢查是否將路徑加入到PATH:
# echo $PATH
顯示的內容中有/usr/local/arm/bin,說明已經將交叉編譯器的路徑加入PATH。至此,交
叉編譯環境安裝完成。
6. 測試是否安裝成功
# arm-linux-gcc -v
上面的命令會顯示arm-linux-gcc信息和版本,顯示的信息:
Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-
3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu
--prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm
-linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable
-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-
languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.1
7.編譯
Hello World程序,測試交叉工具鏈
寫下下面的Hello World程序,保存為
hello.c
#include
int main()
{
printf("Hello World!\n");
return 0;
}
執行下面的命令:
# arm-linux-gcc -o hello hello.c
源程序有錯誤的話會有提示,沒有任何提示的話,就是通過了,就可以下載到ARM目標板上運行了!接著可以輸入file hello的命令,查看生成的hello文件的類型,要注意的是生成的可執行文件只能在ARM體系下運行,不能在其於X86的PC機上運行。
❻ linux系統內核編譯出錯arm需要arm.h
交叉編譯工具鏈的問題。在編譯ARM架構的Linux內核時出現錯誤提示激賣缺少arm.h文件件,是由於交叉編譯工具鏈的問題。解決該問題需簡豎要安裝針對ARM架構的交叉編譯工具鏈,並設攔鉛大置環境變數。Linux系統是一種自由、開放源代碼的計算機操作系統。它是一種多用戶、多任務、支持多線程和多CPU的操作系統。
❼ Ubuntu14.04 用arm-linux-gcc 4.4.3 配置交叉編譯環境問題
安裝步驟
1、將壓縮包arm-linux-gcc-4.4.3.tar.gz存放在一個目錄下,這個目錄就是你等會解壓縮的目錄,以後這個目錄就不能隨便刪掉了
❽ 如何更改ubuntu中交叉編譯工具鏈
更改ubuntu中交叉編譯工具鏈的操作步驟如下:
1. 下載軟體包
從linaro的網站下載預編譯二進制包,地址:https://launchpad.net/linaro-toolchain-binaries/trunk/2013.10。
注意選擇的版本,要使用linux下的哦。選擇這個:gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.bz2
2. 解壓
解壓gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz到 ~/arm-cross-toolchain/目錄下
3. 設置環境變數
~$ vi .bashrc
在最後添加如下 2 行:
PATH=$PATH:/home/lxl/arm-cross-toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin
export PATH
請注意,第一行的$PATH後面是英文冒號,而冒號後面是你的cross-toolchain的可執行文件目錄(bin目錄)的絕對路徑。這兩句的意思就是將cross-toolchain的可執行文件路徑加入系統環境變數PATH中。
4. 使環境變數 生效
~$ source .bashrc
5. 測試