導航:首頁 > 源碼編譯 > cygwin編譯工具

cygwin編譯工具

發布時間:2023-09-06 19:05:14

1. cygwin 中如何安裝arm-linux-gcc交叉編譯

交叉編譯工具鏈作為嵌入式Linux開發的基礎,直接影響到嵌入式開發的項目進度和完成質量。由於目前大多數開發人員使用Windows作為嵌入式開發的宿主機,在Windows中通過安裝VMware等虛擬機軟體來進行嵌入式Linux開發,這樣對宿主機的性能要求極高。Cygwin直接作為Windows下的軟體完全能滿足嵌入式Linux的開發工作,對硬體的要求低及方便快捷的特點成為嵌入式開發的最佳選擇。

目前網路上Cygwin下直接可用的交叉編譯器寥寥無幾且版本都比較低,不能滿足開源軟體對編譯器版本依賴性的要求(如低版本工具鏈編譯U-Boot出現軟浮點問題等);Crosstool等交叉工具鏈製作工具也是更新跟不上自由軟體版本的進度;同時系統介紹Cygwin下製作交叉編譯器方面的資料很少。針對上述情況,基於最新版gcc等自由軟體構建Cygwin下的交叉編譯器顯得尤為迫切和重要。
構建前准備工作
首先Cygwin下必須保證基本工具比如make}gcc等來構建bootstrap-gcc編譯器,這可以在安裝Cygwin時選擇安裝。參照gcc等安裝說明文檔來在Cygwin下查看是否已經安裝,如輸入gcc --v等。
源碼下載
gcc-4.5.0的編譯需mpc的支持,而mpc又依賴gmp和mpfr庫。從各個項目官方網站上下載的最新的源碼:
binutils-2.20. l .tar.bz2
gmp-S.O. l .tar.bz2
mpc-0.8.2.tar.gz
mpfr-3.O.O.tar.bz2
gcc-4.S.O.tar.bz2
linux-2.6.34.tar.bz2
glibc-2.11.2.tar.bz2
glibc-ports-2. l l .tar.bz2
gdb-7. l.tar.bz2

設置環境變數
HOST:工具鏈要運行的目標機器;BUILD:用來建立工具鏈的機器;TARGET工具鏈編譯產生的二進制代碼可以運行的機器。
BUILD=i686-pc-cygwin
HOST=i686-pc-cygwin TARGET=arm-linux
SYSROOT指定根目錄,$PREFIX指定安裝目錄。目標系統的頭文件、庫文件、運行時對象都將被限定在其中,這在交叉編譯中有時很重要,可以防止使用宿主機的頭文件和庫文件。本文首選$SYSROOT為安裝目錄,$PREFIX主要作為glibc庫安裝目錄。
SYSROOT=/cross-root
PREFIX=/cross-root/arm-linux
由於GCC-4.5.0需要mpfr,gmp,mpc的支持,而這三個庫又不需要交叉編譯,僅僅是在編譯交叉編譯鏈時使用,所以放在一個臨時的目錄。
TEMP_PREFIX=/build-temp
控制某些程序的本地化的環境變數:
LC ALL=POSIX
設置環境變數:
PATH=$SYSROOT/bin:兒in:/usr/bin
設置編譯時的線程數f31減少編譯時間:
PROCS=2
定義各個軟體版本:
BINUTILS V=2.20.1
GCC V=4.5.0
GMP V=5.0.1
MPFR V=3.0.0
MPC V二0.8.2
LINUX V二2.6.34
GLIBC V=2.11.2
GLIBC-PORTS V=2.11
GDB V=7.1
構建過程詳解
鑒於手工編譯費時費力,統一把構建過程寫到Makefile腳本文件中,把其同源碼包放在同一目錄下,執行make或順次執行每個命令即可進行無人值守的編譯安裝交叉工具
鏈。以下主要以Makefile執行過程為主線進行講解。
執行「make」命令實現全速運行
可在Cygwin的Shell環境下執行「make>make.log 2>&1」命令把編譯過程及出現的錯誤都輸出到make.log中,便於查找:
all:prerequest install-deps install-cross-stage-one install-
cross-stage-two
預處理操作
"make prerequest',命令實現單步執行的第一步,實現輸出變數、建立目錄及解壓源碼包等操作。0'set十h」關閉bash的Hash功能,使要運行程序的時候,shell將總是搜索PATH里的目錄[4]。這樣新工具一旦編譯好,shell就可以在$(SYSROOT)/bin目錄里找到: prerequest:
set +h&&mkdir -p $(SYSROOT)/bin&&
mkdir -p $(PREFIX)/include&&
mkdir -p $(TEMP一REFIX)&&
export PATH LCes ALL&&
tar -xvf gmp-$(GMP_V).tar.bz2&&
tar -xvf mpfr-$(MPFR_V).tar.bz2&&
tar -xvf mpc-$(MPC_V).tar.gz&&
tar -xvf binutils-$(BINUTILS_V).tar.bz2&&
tar -xvf gcc-$(GCC_V).tar.bz2&&
tar -xvf linux-$(LINUX_V).tar.bz2&&
tar -xvf glibc-$(GLIBC_V).tar.bz2&&
tar -xvf glibc-ports-$(GLIBC-PORTS_V).tar.bz2&&
my glibc-ports-$(GLIBC-PORTS_V)
glibc-$(GLIBC_V)/ports&&
tar -xvf gdb-$(GDB V).tar.bz2
非交叉編譯安裝gcc支持包mpc
00make install-deps」命令實現單步執行的第二步,實現mpc本地編譯,mpc依賴於gmp和mpfr
install-deps:gmp mpfr mpc
gmp:gmp-$(GMP_V)
mkdir -p build/gmp&&cd build/gmp&&
../../gmp-*/configure
--disable-shared --prefix=$(TEMP_PREFIX)&&
$(MAKE)一$(PROCS)&&$(MAKE) install
mpfr:mpfr-$(MPFR_V)
mkdir -p b-uild/mpfr&&cd build/mpfr&&
../..//mpfr-*/configure
LDF'LAGS="-Wl,-search_paths_first」--disable-shared
--with-gmp=$(TEMP_PREFIX)
--prefix=$(TEMP_PREFIX)&&
$(MAKE)一$(PROCS) all&&$(MAKE) install
mpc: mpc-$(MPC_V) gmp mpfr
mkdir -p build/mpc&&cd build/mpc&&
../../mpc-*/configure
--with-mpfr=$(TEMP PREFIX)
--with-gmp=$(TEMP_PREFIX)
--prefix=$(TEMP_PREFIX)&&
$(MAKE)一$(PROCS)&&$(MAKE) install
交叉編譯第一階段
"make install-cross-stage-one',命令實現單步執行的第三步,編譯安裝binutils,bootstrap-gcc和獲取Linux內核頭文件:
install-cross-stage-one:cross-binutils cross-gcc get-kernel-headers
編譯安裝binutils
cross-binutils: binutils-$(BINUTILS_ V)
mkdir -p build/binutils&&cd build/binutils&&
../..//binutils-*/configure --prefix=$(SYSROOT)
--target=$(TARGET)--disable-nls&&
$(MAKE)j$(PROCS)&&$(MAKE) install
編譯安裝bootstrap-gcc。使用一disable-shared參數的意思是不編譯和安裝libgcc_ eh.a文件。glibc軟體包依賴這個庫,因為它使用其內部的一lgcc_eh來創建系統[6]。這種依賴
性,可通過建立一個指向libgcc.a符號鏈接得到滿足,因為該文件最終將含有通常在libgcc- eh.a中的對象(也可通過補丁文件實現)。
cross-gcc:gcc-$(GCC_V)
mkdir -p build/gcc&&cd build/gcc&&
二//gcc-*/configure
--target=$(TARGET)--prefix=$(SYSROOT)
--disable-nls --disable-shared --disable-multilib
--disable-decimal-float--disable-threads
--disable-libmudflap --disable-libssp
--disable-libgomp --enable-languages=c
--with-gmp=$(TEMP_PREFIX)
--with-mpfr=$(TEMP_PREFIX)
--with-mpc=$(TEMP_PREFIX)&&
$(MAKE) -j$(PROCS)&&$(MAICE) install&&
In -vs libgcc.a'arm-linux-gcc -print-libgcc-file-name I
sed's/libgcc/& eh/'}
獲取Linux內核頭文件:
get-kernel-headersainux-$(LINUX_V)
cd linux-$(LINUX_V)&&
$(MAICE) mrproper&&$(MAKE) headers check&&
$(MAKE) ARCH=arm&&
INSTALLes HDR_ PATH=dest headers_ install&&
find dest/include
(-name .install一。-name ..installNaNd)-delete&&
cp -rv desdinclude/* $(PREFIX)/include
交叉編譯第二階段
編譯安裝glibc、重新編譯安裝binutils、完整編譯安裝gcc和編譯安裝gdb o "make install-cross-stage-two',命令實現單步執行的第四步: install-cross-stage-two:cross-glibc cross-rebinutils cross-g++ cross-gdb
編譯安裝glibca glib。的安裝路徑特意選為$(PREFIX),與gcc更好找到動態鏈接庫也有關系,選在$(SYSROOT)提示找不到crti.o; glibc已經不再支持i386; glibc對ARM等的處理器的支持主要通過glibc-ports包來實現;正確認識大小寫敏感(Case Sensitive)和大小寫不敏感(CaseInsensitive)系統,大小寫敏感問題主要影響到glibc,是交叉編譯glibc成功的關鍵:Cygwin幫助手冊中可知Cygwin是默認大小寫不敏感的n},但是UNIX系統是大小寫敏感的,這也是Cygwin和UNIX類系統的一個區別。通過作者自行參考製作的glibc-2.11.2-cygwin.patch補T使glibc變為Case-Insensitive,此補丁主要是對大小寫敏感問題改名來實現。
交叉編譯過程中安裝的鏈接器,在安裝完Glibc以前都無法使用。也就是說這個配置的forced unwind支持測試會失敗,因為它依賴運行中的鏈接器。設置libc_ cvforced unwind=yes這個選項是為了通知configure支持force-unwind,而不需要進行測試。libc cv_c_cleanup=yes類似的,在configure腳本中使用libc_cv_c cleanup=yes,以便配置成跳過測試而支持C語言清理處理。
cross-glibc:glibc-$(GLIBC_V)
cd glibc-$(GLIBC_V)&&
patch -Np 1 –i...//glibc-2.11.2-cygwin.patch&&
cd..&&mkdir -p build/glibc&&
cd build/glibc&&
echo"libc cv_forcedes unwind=yes">config.cache&&
echo "libc cv_c_cleanup=yes">>config.cache&&
echo "libc cv_arm_tls=yes">>config.cache&&
../../glibc-*/configure --host=$(TARGET)
--build=$(../OneScheme/glibc-2.11.2/scripts/config.guess)
--prefix=$(PREFIX)--disable-profile
--enable-add-ons --enable-kernel=2.6.22.5
--with-headers=$(PREFIX)/include
--cache-file=config.cache&&
$(MAKE)&&$(MAKE) install
重新編譯安裝binutils。編譯之前要調整工具鏈,使其
指向新生成的動態連接器。
調整工具鏈:
SPECS=
'dirname $(arm-linux-gcc -print-libgcc-file-name)'/specs
arm-linux-gcc -mpspecs
sed -e 's@/lib(64)\?/ld@$(PREFTX)&@g' -e ,}/}}*cPP}$/{n;s,$,-isystem $(PREFIX)/include,}"
>$SPECS
echo "New specs file is: $SPECS"
unset SPECS
測試調整後工具鏈:
echo 'main(川』>mmy.c
arm-linux-gcc
-B/cross-root/arm-linux/lib mmy.c
readelf -1 a.out I grep』:/cross-roobarm-linux'
調整正確的輸出結果:
[Requesting program interpreter: /tools/lib/ld-linux.so.2j
一切正確後刪除測試程序:
rm -v mmy.c a.out
重新編譯binutils。指定--host,--build及--target,否則配置不成功,其config.guess識別能力不如gcc做的好。
cross-rebinutils: binutils-$(BINUTILS_V)
mkdir -p build/rebinutils&&
cd build/rebinutils&&CC="$(TARGET)-gcc
-B/cross-roodarm-linux/lib/"&&AR=$(TARGET)-ar&&
RANLIB=$(TARGET)-ranlib&&../..//binutils-*/configure
--host=$(HOST)--build=$(BUILD)--target=$(TARGET)
--prefix=$(SYSROOT)--disable-nls
--with-lib-path=$(PREFIX)/lib&&
$(MAKE)--$(PROCS)&&$(MAKE) install
高於4.3版的gcc把這個編譯當作一個重置的編譯器,並且禁止在被一prefix指定的位置搜索startfiles。因為這次不是重置的編譯器,並且$(SYSROOT)目錄中的startfiles對於創
建一個鏈接到$$(SYSROOT)目錄庫的工作編譯器很重要,所以我們使用下面的補丁,它可以部分還原gcc的老功能tai . patch -Npl –i../gcc-4.5.0-startfiles_fix-l.patch
在正常條件下,運行gcc的fixincludes腳本,是為了修復可能損壞的頭文件。它會把宿主系統中已修復的頭文件安裝到gcc專屬頭文件目錄里,通過執行下面的命令,可以抑
制fixincludes腳本的運行[9](此時目錄為/gcc-4.5.0)。
cp -v gcc/Makefile.in{,.orig}
sed 's@\./fixinc\.sh@-c true@'
gcc/Makefile.in.orig > gcc/Makefile.in
下面更改gcc的默認動態鏈接器的位置,使用已安裝在/cross-root/ann-linux目錄下的鏈接器,這樣確保在gcc真實的編譯過程中使用新的動態鏈接器。即在編譯過程中創建的所有
二進制文件,都會鏈接到新的glibc文件
for file in
$(find gcc/config -name linux64.h-o -name linux.h –o -name sysv4.h)
do cp -uv $file{,.orig}
sed -a 's@/lib(64)?(32)?/Id@/cross-root/arm-linux&@g』-e's@/usr@/cross-rootlarm-linux@g' $file.orig>$file echo『
#undef STANDARD INCLUDE DIR
#define STANDARD_ INCLUDE DIR "/cross-root/arm-linux/include"
#define STANDARD STARTFILE PREFIX 1 "/cross-root/arm-linux/lib"
#define STANDARD_ STARTFILE_ PREFIX_ 2」」』>>$file
touch $file.orig done
完整編譯安裝gcc。最好通過指定--libexecdir更改libexecdir到atm-linux目錄下。--with-local-prefix選項指定gcc本地包含文件的安裝路徑此處設為$$(PREFIX),安裝後就會在內核頭文件的路徑下。路徑前指定$(Pwd)則以當前路徑為基點,不指定則默認以/home路徑為基點,這點要注意。
cross-g++:gcc-$(GCC-)
mkdir -p build/g十+&&cd build/g++&&
CC="$(TARGET)-gcc AR=$(TARGET)-ar&&
-B/cross-roodarm-linux/lib/"&&
RANLIB=$(TARGET)-ranlib&&
..//gcc-*/configure
--host=$(HOST)--build=$(BUILD)--target=$(TARGET)
--prefix=$(SYSROOT)--with-local-prefix=$(PREFIX)
--enable-clocale=gnu --enable-shared
--enable-threads=posix --enable -cxa_atexit
--enable-languages=c,c++--enable-c99
--enable-long-long --disable-libstdcxx-pch
--disable-libunwind-exceptions
--with-gmp=$(TEMP_PREFIX)
--with-mpfr=$(TEMP_PREFIX)
--with-mpc=$(TEMP_PREFIX)&&
$(MAKE) LD_IBRARY_ATH=
$(pwd)/$(../../gcc-4.5.0/config.guess)/libgcc&&
$(MAKE) install
編譯安裝gdb,至此完成整個工具鏈的製作。
cross-gdb: gdb-$(GDB V)
mkdir -p build/gdb&&cd build/gdb&&
../../gdb-*/configure --prefix=$(SYSROOT)
--target=$(TARGET)--disable-werror&&
$(MAKE)-j$(PROCS)&&$(MAKE) install
「make clean」命令清除編譯生成的文件和創建解壓的文件夾
.PHONY:clean
dean:
rm -fr $(TEMP_PREFIX) build
binutils-$(BINUTIL,S_V) gcc-$(GCC_V)
glibc-$(NEWL.IB_V) gdb-$(GDB_V)
gmp-$(GMP_V) mpc-$(MPC_V) mpfr-$(MPFR_V)
工具鏈測試
命令行中輸入以下內容:
echo 'main(){}』>mmy.c
arm-linux-gcc -o mmy.exe mmy.c
file mmy.exe
運行正常的結果:
mmy.exe: ELF 32-bit LSB executable, ARM, version 1,for GNU/Linux 2.6.22, dynamically linked (uses shared libs),not stripped.

2. cygwin下可以編譯android源碼嗎

cygwin下可以編譯android源碼。

1.Cygwin簡介
Cygwin是在Windows下模擬Linux環境的工具集,它主要包含一下兩個部分:
1) cywin1.dll : 該文件模擬了真是的LinuxAPI,是一個API模擬層,開發人員可以將在Linux下編寫的C/C++ 源代碼在Cygwin中進行編譯,在編譯的過程中,如果C/C++ 調用了Linux中的API,Cygwin就會利用cygwin1.dll 來編譯 C/C++源代碼,從而可以在windows下生成Linux下的lib...so文件
2) 模擬Linux環境的工具集

另外,msys也是在windows 下模擬linux環境的工具。

3. Windows下怎樣編譯出可在Linux上執行的程序

1、可以安裝cygwin,Cygwin是一個在windows平台上運行的類UNIX模擬環境,是cygnus solutions公司開發的自由軟體,搜索官網下載即可,下載完成,安裝的時候注意記得安裝相關語言的編譯器、解釋器,在cygwin中生成Linux可執行文件。
2、 可以安裝vmware、virtualpc等虛擬機,在虛擬機里安裝linux系統,然後在linux系統中編譯相應的源碼,生成linux上的可執行文件。

4. 誰推薦個好的C++編輯器

分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:

最近覺得以前用的Turbo C++編輯器太難操作了,請問下誰知道有什麼美觀又好操作的C++編輯器嗎?我覺得FLASH的腳本編輯界面就很好,哪位大蝦給推薦一個?重謝!

解析:

C++開發常用工具「群英會」

開發環境

---->Turbo c

DOS時代c語言開發的經典工具,目前適合兩類人使用:c語言beginner(尤其是學生一族),具有懷舊情節的專業人士:)

---->Visual C++ 6.0/7.0

穩定而強大的IDE開發環境,具有豐富的調試功能,定製宏的功能也是其一大特色。Microsoft的經典之作,功能強大自不必言說。附帶的一些工具也很不錯,比如:Spy++。但編譯器較之同類,支持c++標準的程度不夠好,尤其6.0及以前的版本。

---->BCB

Borland的C++ Builder是可以與VC匹敵的另一個功能強大的IDE,速度和穩定性稍遜,但對c++標准支持的程度較好。

---->Cygwin

Windows平台下的C++編譯器,基於gcc,又完全兼容Window特有的東西,比如對winsock的支持。從cygwin可以找到有關Cygwin的詳細信息。

---->Dev-c++

Windows平台下,一個類似VC、BCB的c++ IDE開發環境,屬於共享軟體。界面親切優雅,size也不大,其4.9.x版有中文語言支持,無需漢化。編譯器基於gcc,完全支持STL。但是對於規模較大的軟體項目,恐怕難以勝任。可以從bloodshed/dev/devcpp找到有關Dev-c++的有關信息。

---->Source Insight

有著和Dev c++一樣漂亮的界面,提供代碼的編輯和察看功能,具有豐富的語法加亮功能,可以像VC一樣自動彈出成員函數的提示,並具有快速方便的函數跳轉功能(但是跳轉速度似乎有點慢)。只是默認設置不適合時,需要仔細的調整和修改。無法查找經typedef之後的名字。

輔助工具

---->Visual Assist

VC IDE環境下的輔助編程工具,能識別各種關鍵字、函數、成員變數,自動給出tip,並自動更正大小寫錯誤,標示拼寫錯誤等。是VC開發的良好伴侶。

---->Understand for C++

一款c/c++IDE編程的輔助工具,支持反向工程,代碼導向和一些統計功能,從scitools可以找到有關Understand for C++的詳細信息。

程序編輯器

---->EditPlus

一款很不錯的文本編輯軟體,功能強大卻又十分輕巧。支持不同語言的語法加亮,還有Project組織功能,具有豐富的自定義功能。通過設置User Tool,可以和其他語言編譯器結合,形成一個簡單的IDE。

---->Ultra Edit

功能和EditPlus相當,通過腳本文件提供的配置功能可以定製編輯環境,但自6.0版以後一直沒多大變化,就編程而言,自定義設置沒有EditPlus方便。

---->EMACS

公認的世界上功能最多,最復雜的文本編輯器,其實也可以當作程序員用的編輯器。

---->Visual Slick Edit

一個功能強大的程序員用編輯器。最值得一提的是其定製功能,很好用,可以和EMACS相比。自帶了一套PCODE解釋器,用c的語法,還可以掛接動態庫。配合mingw一起使用很方便。從slickedit可以找到有關SlickEdit的詳細信息。

---->IQEdit

全功能的程序員用編輯器,界面很漂亮,從pwksofare可以找到有關IQEdit的詳細信息。

UML/建模

---->Rational Rose

強大的建模工具,早已「家喻戶曉」,功過自然不必多加評說了。從rationalsofare可以找到有關Rational Rose的詳細信息。

---->Visual Modeler

MS Visual Studio 6.0所附的小工具。屬於Rational和MicroSoft合作的戰略產品,是Rose的簡化版。

---->Visio

Microsoft的建模工具,感覺更人性化一些,但功能沒有Rose多、強、專,支持正向的代碼生成,以及對代碼的反向工程。

---->Together

另一款功能強大的建模工具,用java編寫而成,口碑不錯,不過速度稍稍慢了一些。從togethersoft可以找到有關Togather的詳細信息,另外,以下網址提供了一個有關Together的教程: cc.puv.fi/~tka/kurssit/Tietojarjestelmien_suunnittelu/together/TCCGuide6

---->Visual UML

支持多種語言類型,比如:VC、VB、DELPHI、CORBA IDL等,可以直接從UML設計圖生成代碼,簡單易用,完全適合Personal use,界面也很清爽。從visualObject可以找到有關Visual UML的詳細信息。

---->SmartDraw

通用圖表製作軟體,可以用來製作組織機構圖、流程圖、統計圖表等。隨帶有圖庫,基本滿足製作各類圖表的需要。從 *** artdraw可以找到有關SmartDraw的詳細信息。

---->PlayCase

國產面向對象的建模軟體,兼容UML和IDEF,輕量級軟體,只是界面看起來有點簡朴,乃是高展先生用Delphi完成的。

版本控制

---->ClearCase

Rational的版本控制管理軟體,功能強大,可以控制多種類型的文檔,甚至包括Word、Excel、PowerPoint文檔。但使用復雜,不易上手,且不是免費軟體。

---->CVS

為基於Web的分布式協同開發提供了版本控制管理手段,且是免費軟體,可以通過腳本定製功能。但在許可權控制方面功能相對較弱。

---->VSS

微軟的版本控制管理工具,功能相對簡單,適合於小型團隊開發,將其整合到微軟的其他開發工具中,使用起來十分方便。

---->SourceOffSite

微軟為開發人員提供的遠程訪問VSS資料庫的工具,使資料庫得以遠程更新,以支持遠程辦公。其他的版本管理工具還包括:PVCS、VCS、RCS等。

XML

---->expat

用於讀取和處理XML文檔的c函數庫,最初是James Clark的個人作品,簡單輕巧,且速度快。但支持的編碼方式有限,最遺憾的是不支持中文。從expat.sourcefe可以找到有關expat的詳細信息。

---->xml4c

IBM的XML Parser,用c++語言寫就,功能超級強大。號稱支持多達100種字元編碼,能夠支持中文,適合於大規模的xml應用。若只是很小范圍的應用,則非最佳選擇,畢竟,你需要「背負」約12M左右的dll的沉重負擔。從alphaworks.ibm/tech/xml4c可以找到有關xml4c的詳細信息。

---->Xerces c++

Apache的XML項目,同樣是c++實現,來源於IBM的xml4c,因此編程介面也是和xml4c一致的。但是目前只支持少數的字元編碼,如ASCII,UTF-8,UTF-16等,不能處理包含中文字元的XML文檔。從 xml.apache/xerces-c可以找到有關Xerces c++的詳細信息。

測試

---->CppUnit

一個c++的單元測試框架,可以通過派生測試類的方式,定製具體的測試方案。xUnit家族的一員,從JUnit移植而來,JUnit是Java語言的單元測試框架。從cppuint.sourcefe可以找到有關CppUint的詳細信息。

---->Rational ROBOT

Rational的自動化測試工具,通過編寫腳本的方式提供自動化測試特性。其GUI方式的腳本錄制功能,有助於對GUI軟體進行功能測試;其VU方式的腳本錄制功能,有助於測試某些軟體的數據通訊功能。

---->Rational Purify

同樣是Rational的自動化測試工具,不需要被測程序的源代碼,可以用來檢查內存訪問錯誤、Windows API調用錯誤等,以完成軟體的可靠性測試,屬於白盒測試。

其他的Rational測試工具還包括:TestFactory、PureCoverage、TestManager等。

日誌

---->log4cpp

一個用於日誌記錄的c++函數庫,可以將內容以定製的方式記錄到不同的目的地,比如:文件、控制台syslog等,同時還可以通過控制記錄級別來屏蔽掉某些無關記錄。從log4cpp.sourcefe可以找到有關log4cpp的詳細信息。

注釋

---->Doc++

注釋文檔生成工具,根據源程序中的文檔注釋,可以輸出TeX和HTML格式的文檔。除了支持c/c++語言外,還支持IDL和java。僅提供命令行使用方式。從docpp.sourcefe可以找到有關Doc++的詳細信息。

---->Doxygen

注釋文檔生成工具,較之Doc++功能更為齊全,可以生成包括HTML、PDF、RTF在內的多種格式的文檔,並有GUI界面,除了支持c/c++語言外,還支持IDL、java、PHP、c#等。從stack.nl/~dimitri/doxygen可以找到有關Doxygen的詳細信息。

5. cygwin下編譯,調試C源程序

你是初學者吧,沒關系,很簡單的。
cygwin我沒用過,大概是別人給套了個可視化編程界面了。
1.你運行cygwin這個軟體,然後「文件/打開/」把你准備好的C源代碼載入到這個軟體中。(就好比我們平時用word時,先運行word軟體,然後把你的文檔加如入並進行編輯。)
2.在軟體界面上(一般在:工具欄)找一個功能為「運行」的按紐。

准備知識:
寫一個程序一般分以下步驟:
1.編輯(就是把你的源代碼寫出來,你可以用「記事本」寫,當然一般編程工具cygwin也會提供編輯環境)
2.編譯+連接(你只要點個按紐就行,這個任務完全由cygwin完成,你不必管它怎麼完成這個任務的。
==============================
那麼,編譯是什麼意思呢?
==============
由於你是初學者,我只能用盡可能通俗的話給你解釋一下,這種解釋是不夠准確的。因為計算機本身只認識二進制指令,就是0/1的序列,每個0/1的序列都在計算機設計時,就賦予了一定的含義。比如:設計師可以把0001表示作個加法,用0000表示作個減法。但是如果人們用0/1的序列來表達我們的需求,顯然非常麻煩。於是,後來一些科學家就發明了一種近似英語的計算機語言C,很明顯如果要讓計算機也明白C表達的意思,我們就必須把C翻譯成0/1的序列。那麼,編譯就可以理解為「翻譯」。
[打個比方1]這就好比,你是個中國人,你只會說中文,計算機是個美國人,它只會說英語。你要請計算機給你做件事,你可以用中文寫好你的要求,然後請個翻譯,把你的要求翻譯成英語。)
======
調試是什麼呢?
=====
調試分兩個層面:(沿用上面的比方1)
1.語法層
你用中文表達你的要求時,可能你的用語不夠規范,或寫了錯別字,使得你
請的翻譯不理解你的意思,沒辦法翻譯下去。這時,這個翻譯就會通知你說:「對不起,你這個字是不是寫錯了」。於是,你就「調整調整,修改修改,才試一試」(「調試」由此得名),然後才請翻譯進行翻譯。
2.語意層
由於你的疏忽,你把要求表達錯了。舉個離譜點的例子:你本意是打算請計算機幫你買張去北京的火車票的,結果你不小心,寫成了買張去上海的火車票。出現這個錯誤,翻譯沒方法告訴你,只有等計算機把一張上海的車票給你,你才意識到,於是你重新調試,才執行。

閱讀全文

與cygwin編譯工具相關的資料

熱點內容
如何用app覆蓋全部曲庫 瀏覽:602
變異布林源碼 瀏覽:680
表格加密設置列印區域 瀏覽:437
卡耐基pdf下載 瀏覽:922
現在最流行的單片機 瀏覽:88
機頂盒刷機源碼 瀏覽:985
編碼pdf下載 瀏覽:944
隔壁同學app怎麼 瀏覽:299
c語言宏命令 瀏覽:542
php卡死源碼 瀏覽:574
time庫中的clock函數python 瀏覽:989
cad視覺移動命令怎麼打開 瀏覽:821
安卓java調用python 瀏覽:395
java標准時間 瀏覽:137
華為伺服器湖北渠道商雲主機 瀏覽:30
韓式面部護理解壓視頻 瀏覽:301
pdf換成jpg圖片 瀏覽:897
dh加密演算法 瀏覽:107
安卓手機如何隱藏微信信息提示 瀏覽:632
nodejs解壓縮 瀏覽:262