當前位置:首頁 » 編程軟體 » 交叉編譯庫路徑

交叉編譯庫路徑

發布時間: 2022-09-19 02:42:27

1. 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

2. 如何進行Qt應用程序的交叉編譯

首先得把我們在X86機上調好的程序進行交叉編譯,如果在X86上都沒有通過的話。。那就不用交叉編譯了,(肯定是通不過的),還是到正題吧,設置好環境變數,我們用以用echo 來查看環境變數,echo $TMAKEPATH ,如果返回的不是.../qws/linux-arm-g++ 的字元的話,我們一定得從新設置,

export TMAKEPATH=/tmake 的安裝路徑/qws/linux-arm-g++ ,同時QTDIR一定得要指定QTE的安裝路徑,設置過程如下:

export QTDIR=...../qt-2.3.7

以上環境設置好後,我們可以使用tmake來生成Makefile,注意這里我們是用tmake,而不是用qmake(注意),tmake工具在tmake包裡面。 具體做法,我們可以在命令行下打:

tmake -o Makefile 工程名.pro

這樣我們就新生成了一個Makefile文件,下一步,我們要打開這個文件,做一些小的修改

1: 將LINK=arm-linux-gcc 改為:LINK=arm-linux-g++

2:將LIBS=$(SUBLIBS) -L$(QTDIR)/lib -lm -lqte這句話改為:

LIBS=$(SUBLIBS) -L/opt/gcc-2.3.2-glibc-3.3.2/lib -L$(QTDIR)/lib -lm -lqte

加上你的交叉編譯的庫。

最後我們可以make了,一個可以在您的板子上可以運行的二進制文件產生了。linux

3. 交叉編譯鏈應該安裝到哪個目錄下

創建目錄以及環境變數
在當前用戶目錄下創建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文件夾下。

4. linux下用交叉編譯器編譯時,已經指定了庫的路徑跟庫的名字,可是還是報錯找不到庫。

看起來它不是個庫,倒像是個可執行程序
一般so都放在lib這樣的目錄下,你這個是bin,而且和它在一起的都是可執行程序,並且它沒有so後綴名。

5. 交叉編譯時,如何鏈接指定路徑下的庫

在整個工程的configure.in文件中加入如下代碼:
#configure.in
if test x$CC = xgcc; then
#AC_PATH_PROG(BLKID, blkid, [], [$PATH:/sbin])
#AC_PATH_PROG(VOLID, vol_id, [], [$PATH:/lib/udev])
AC_MSG_WARN($BLKID --------------------------------------) #code only for test
AM_CONDITIONAL(MY_CROSS_COMPILE,false)
else
#AC_PATH_PROG(BLKID, blkid, [], [/home/user-name/ltib/rootfs/sbin])
#AC_PATH_PROG(VOLID, vol_id, [], [/home/user-name/ltib/rootfs/lib])
AC_MSG_WARN($BLKID ++++++++++++++++++++++++++++++++++++++) #code only for test
AM_CONDITIONAL(MY_CROSS_COMPILE,true)
fi

在需要blkid庫的Makefile.am文件中
if MY_CROSS_COMPILE
AM_CPPFLAGS = -include $(top_builddir)/config.h -I ../include \
-DLOCALEDIR=\"$(localedir)\" -I /home/user-name/ltib/rootfs/usr/include
AM_CFLAGS = -fsigned-char -I /home/user-name/ltib/rootfs/usr/include
else
AM_CPPFLAGS = -include $(top_builddir)/config.h -I ../include \
-DLOCALEDIR=\"$(localedir)\"
AM_CFLAGS = -fsigned-char
endif

lib_mount_la_LIBADD = $(LDADD_common)
LDADD_common =

if MY_CROSS_COMPILE
LDADD_common += -L$(LTIB_PATH)/rootfs/usr/lib -lblkid -luuid
else
LDADD_common += -lblkid -luuid
endif

6. 如何交叉編譯開源庫

所謂的搭建交叉編譯環境,即安裝、配置交叉編譯工具鏈。在該環境下編譯出嵌入式Linux系統所需的操作系統、應用程序等,然後再上傳到目標機上。
交叉編譯工具鏈是為了編譯、鏈接、處理和調試跨平台體系結構的程序代碼。對於交叉開發的工具鏈來說,在文件名稱上加了一個前綴,用來區別本地的工具鏈。例如,arm-linux-表示是對arm的交叉編譯工具鏈;arm-linux-gcc表示是使用gcc的編譯器。除了體系結構相關的編譯選項以外,其使用方法與Linux主機上的gcc相同,所以Linux編程技術對於嵌入式同樣適用。不過,並不是任何一個版本拿來都能用,各種軟體包往往存在版本匹配問題。例如,編譯內核時需要使用arm-linux-gcc-4.3.3版本的交叉編譯工具鏈,而使用arm-linux-gcc-3.4.1的交叉編譯工具鏈,則會導致編譯失敗。
那麼gcc和arm-linux-gcc的區別是什麼呢?區別就是gcc是linux下的C語言編譯器,編譯出來的程序在本地執行,而arm-linux-gcc用來在linux下跨平台的C語言編譯器,編譯出來的程序在目標機(如ARM平台)上執行,嵌入式開發應使用嵌入式交叉編譯工具鏈。

工具/原料
電腦系統:win7系統。虛擬機系統:workstation6.5 。虛擬機安裝的linux版本:fedora9.0。內核:linux2.6.25 。
方法/步驟
1
我使用的交叉編譯工具鏈是arm-linux-gcc-4.4.3,把它放在linux系統的路徑是圖一

2
在linux系統的路徑/home/song/share下放了交叉編譯工具鏈arm-linux-gcc-4.4.3的壓縮包,另一個版本的不用。有的人可能會問到怎麼把這個壓縮包弄到虛擬機的linux的系統的,我是通過samba服務從主機復制到虛擬機的,這里的share文件夾就是我samba伺服器的工作目錄,多了不說,這不是重點。
然後通過命令mkdir embedded 建立一個arm-linux-gcc的安裝目錄,如圖二所示。當然安裝路徑和目錄名稱「embedded」可以依自己的喜好而定。
步驟閱讀
然後通過命令將share文件夾下的arm-linux-gcc-4.4.3.tar.gz復制到這里的embedded文件夾下, 當然這里你也可以不進行這一步我這是為了方便以後管理,將arm-linux-gcc安裝到embedded文件夾下,方便以後尋找。

然後使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz將embedded文件夾下的arm-linux-gcc-4.4.3.tar.gz解壓縮安裝到當前目錄下

執行完解壓縮命令,就已經將交叉編譯工具鏈arm-linux-gcc-4.4.3安裝到linux系統上了,這里默認安裝到了圖六所示的路徑上。

接下來配置系統環境變數,把交叉編譯工具鏈的路徑添加到環境變數PATH中去,這樣就可以在任何目錄下使用這些工具。 vi /etc/profile 編輯profile文件,添加環境變數。

在profile中的位置處,添加圖八所示的紅線標注的一行,路徑就是圖六中的紅線標注的路徑後面加上/4.4.3/bin。

圖八中的路徑一定是你自己的安裝路徑,可以使用pwd命令查找一下那個bin目錄的路徑。添加完路徑後,保存退出。接下來使用命令:source /etc/profile,是修改後的profile文件生效,如圖九所示。

然後,使用命令:arm-linux-gcc -v查看當前交叉編譯鏈工具的版本信息,如圖九中的紅線標注第③行所示。很明顯 可以看到,如果不執行第②步,則查看版本信息不成功。
然後驗證交叉編譯工具鏈是否安裝成功並且可以使用,如圖九所示,隨便找一個目錄編輯一個hello源代碼。

編輯好hello.c文件後,保存退出。然後使用交叉編譯器對hello.c進行編譯,並生成可執行文件hello

這里生成的hello文件並不能像gcc編譯出來的文件那樣直接使用「./hello」命令執行並顯示內容 因為它是一個二進制文件,只能下載到開發板上執行!

至此,搭建交叉編譯環境步驟結束。

7. arm-linux交叉編譯器的路徑設置問題,怎麼辦

尚觀Linux入門基礎課程 http://you.video.sina.com.cn/a/1544927-1320045357.html

Linux學習方法二-----尚觀入學前免費Linux課程 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#11620270
Linux學習方法之三---...學前免費Linux基礎課程 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#11621587
Linux最佳入門教程六-RHEL5安裝 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#11633451
linux最佳入門系列-bash編程基礎 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#12155782
尚觀講座之C語言指針 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#14072212
Linux下J2EE伺服器配置與集群-尚觀講座。http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#14675886
Linux安全機制,尚觀Linux培訓 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#11619396
尚觀linux安全DDOS攻擊防範(一)http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#7145242
Linux最佳入門教程三 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#11632447
Linux最佳入門教程四 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#11631234
Linux最佳入門教程五 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#11631388
Linux最佳入門教程五-RHEL4安裝(一) http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#11632917
Linux最佳入門教程五-RHEL4安裝(二) http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=1544927&uid=1320045357&t=1#11631876
Linux嵌入式開發視頻之C語言基礎http://you.video.sina.com.cn/a/2144683-1320045357.html

1.類型運算符表達式http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=2144683&uid=1320045357&t=1#16566482
3.函數與程序結構2 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=2144683&uid=1320045357&t=1#16566780
5.結構體聯合體位欄位3 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=2144683&uid=1320045357&t=1#16561239
5.結構體聯合體位欄位2 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=2144683&uid=1320045357&t=1#16561197
5.結構體聯合體位欄位1 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=2144683&uid=1320045357&t=1#16561159
4.數組與指針3 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=2144683&uid=1320045357&t=1#16566908
4.數組與指針2 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=2144683&uid=1320045357&t=1#16566864
2.控制流2 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=2144683&uid=1320045357&t=1#16560817
3.函數與程序結構1 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=2144683&uid=1320045357&t=1#16566668
4.數組與指針1 http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=2144683&uid=1320045357&t=1#16561009

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:618
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:345
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:60
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:287
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:780
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:332
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:195
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:784
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:348
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:576