国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
如何在cygwin下交叉編譯GCC及使用
http://blog.chinaunix.net/uid-223060-id-2127496.html
2009

 組內(nèi)要將編譯發(fā)版統(tǒng)一用一個(gè)工具來進(jìn)行,我的模塊也要統(tǒng)一,所以研究了一下cygwin和crosstool。

1、概述

本次SI工具需要將Linux相關(guān)模塊統(tǒng)一到windows下編譯,經(jīng)過調(diào)查,cygwin可以做到這一點(diǎn),但需要將gcc、as等編譯鏈接工具和glibc、libpthread等庫文件在cygwin環(huán)境下交叉編譯,使之可以在windows平臺(tái)做到如下兩點(diǎn):

        生成Linux平臺(tái)上的可執(zhí)行文件(即生成ELF格式的可執(zhí)行文件,而不是windows平臺(tái)的PE格式)。

        ia32平臺(tái)上可以編譯出ia32平臺(tái)和ipf(ia64)平臺(tái)相應(yīng)的可執(zhí)行文件。

背景知識(shí):http://baike.baidu.com/view/650389.htm

 

2、交叉編譯器生成

Gcc項(xiàng)目本身編譯時(shí)即支持不同目標(biāo)平臺(tái),但是配置復(fù)制,一般生成有兩條途徑:

        如果目標(biāo)平臺(tái)已經(jīng)有現(xiàn)成的編譯鏈接工具和庫文件,可以直接拷貝過來使用,但是要求生成目標(biāo)2進(jìn)制格式兼容,即兩者應(yīng)該是同一操作系統(tǒng)。實(shí)例:http://www.gelato.unsw.edu.au/IA64wiki/AlternateCrossCompilation2

        重新編譯gcc、as等編譯鏈接工具和glibc、libpthread等庫文件使之支持目標(biāo)平臺(tái),為了簡化過程,使用工具crosstool(http://www.kegel.com/crosstool/)

Crosstool支持很多平臺(tái),其中也包括cygwincygwin既可以做host平臺(tái)和build平臺(tái)也可以做target平臺(tái)。

 

操作系統(tǒng):Windows2003EE-JP-R2-SP2

使用的cygwin版本為1.5.24-1。(使用宗武下載的版本,此處的1.5.24-1指的是cygwin1.dll的版本)。

使用的crosstool版本為0.43,放在cygwin環(huán)境下的/opt目錄下。

我們的Linux模塊目前主要編譯環(huán)境是RHEL3 Update8,其中的gcc版本為3.2.3-56glibc版本為2.3.2,crosstool有很多預(yù)先編譯成功留下來的簡化操作腳本,其中包括gcc-3.2.3-glibc-2.3.2這一系列,可以繼續(xù)使用,需要下載的模塊有:binutils-2.15.tar.gzgcc-3.2.3.tar.gz,glibc-2.3.2.tar.gz,glibc-linuxthreads-2.3.2.tar.gz,linux-2.4.26.tar.bz2。

 

2.1 IA32平臺(tái)

使用demo-i686.sh可以啟動(dòng)相應(yīng)的編譯過程,但要做修改,修改處如下:

        TARBALLS_DIR變更為/opt/downloads,為了簡便起見,將下載的模塊放在這個(gè)目錄。

        GCC_LANGUAGES變更為”C”,因?yàn)樵诰幾gSTL庫的時(shí)候發(fā)生的錯(cuò)誤,目前還沒有找到對應(yīng)方法。所以把”C++去掉,生成的編譯器只能編譯C語言源碼,不支持C++

        eval `cat i686.datgcc-4.1.0-glibc-2.3.6-tls.dat` sh all.sh –notest變更為eval `cat i686.dat gcc-3.2.3-glibc-2.3.2.dat` shall.sh –notest

其他文件不用修改,在cygwin下執(zhí)行./demo-i686.sh就可以開始編譯過程,整個(gè)完成大概需要6小時(shí)左右。

生成的交叉編譯器會(huì)放在/opt/crosstool/gcc-3.2.3-glibc-2.3.2/i686-unknown-linux-gnu/bin目錄下。

2.2 IA64IPF)平臺(tái)

使用demo-ia64.sh可以啟動(dòng)相應(yīng)的編譯過程,也要做修改,修改處如下

        TARBALLS_DIR變更為/opt/downloads,為了簡便起見,將下載的模塊放在這個(gè)目錄。

        GCC_LANGUAGES變更為”C”,因?yàn)樵诰幾gSTL庫的時(shí)候發(fā)生的錯(cuò)誤,目前還沒有找到對應(yīng)方法。所以把”C++去掉,生成的編譯器只能編譯C語言源碼,不支持C++

        eval `cat ia64.datgcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh--notest變更為eval `cat ia64.datgcc-3.2.3-glibc-2.3.2.dat` sh all.sh –notest

ia64.dat的變更,把其中的TARTGETia64-unknown-linux-gnu變更為ia64-Linux

all.sh的變更,把其中的TOOLCOMBO$GCC_DIR-$GLIBC_DIR變更為go。原因:如果不縮短,最后生成物件時(shí)候由于路徑名過長會(huì)產(chǎn)生錯(cuò)誤,

具體解釋:http://www.kegel.com/crosstool/current/doc/crosstool-howto.html#cygwin

 

編譯過程中還有一處修改,在啟動(dòng)demo-ia64.sh之后,會(huì)逐個(gè)解壓上面提到的下載模塊,在解壓完glibc-2.3.2之后,需要馬上修改glibc-2.3.2/iconvdata/Makefile,將其中的gb18030相關(guān)內(nèi)容全部刪除,必須在編譯此模塊之前完成。否則會(huì)出現(xiàn)錯(cuò)誤,錯(cuò)誤原因還沒有找到,但是因?yàn)?/span>iconvdatagcc國際化相關(guān)模塊,而且gb18030是中文相關(guān)編碼,目前我們的模塊用不到,可以去掉。


其他文件不用修改,整個(gè)編譯完成大概需要6小時(shí)左右。

 

生成的交叉編譯器會(huì)放在/opt/crosstool/go/ia64-linux/bin目錄下。

 

交叉編譯器使用

首先在cygwin安裝目錄的bin目錄下作一個(gè)腳本,以生成的i686-unknown-linux-gnu-gcc.exe為例,腳本名命名為gcc-linux-3.2.3。里面的內(nèi)容如下:

#!/bin/sh
/opt/crosstool/gcc-3.2.3-glibc-2.3.2/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc $*

生成之后就可以在命令行直接以gcc-linux-3.2.3運(yùn)行此交叉編譯器。

 

然后修改我們Linux模塊相應(yīng)的makefile文件,將LDCC兩個(gè)變量變?yōu)橄鄳?yīng)的剛才生產(chǎn)的腳本名,就可以按正常手順編譯模塊。

 

windows下使用make編譯模塊之前要先設(shè)置環(huán)境變量,使用命令path %PATH%;c:\cygwin\bin(參看http://www.cppblog.com/wangjs720/archive/2008/09/13/61768.aspx)。之后就可以在windows命令行下邊執(zhí)行cygwin的命令,包括剛才編譯出來的gcc。
如果原來編譯時(shí)用的頭文件和庫文件cygwin下面沒有的話,可以直接把Linux下面的相應(yīng)文件拷貝過來放置到相應(yīng)目錄就可使用。


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
我的白金時(shí)代: cygwin下交叉編譯環(huán)境搭建完成
在Windows下使用gcc
使用crosstool生成mipsel-linux 3.4.5交叉編譯器
比較MingW與Cygwin(搜集) - 姚中凱的日志 - 網(wǎng)易博客
eclipse上配置c語言開發(fā)環(huán)境
MinGW下載和安裝教程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服