亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Windows > 正文

windows平臺上運行的unix模擬環境cygwin cygwin的安裝配置與使用介紹

2019-11-28 04:16:45
字體:
來源:轉載
供稿:網友

1 引言
cygwin是一個在windows平臺上運行的unix模擬環境,是cygnus solutions公司開發的自由軟件(該公司開發了很多好東西,著名的還有eCos,不過現已被Redhat收購)。它對于學習unix/linux操作環境,或者從unix到windows的應用程序移植,或者進行某些特殊的開發工作,尤其是使用gnu工具集在windows上進行嵌入式系統開發,非常有用。隨著嵌入式系統開發在國內日漸流行,越來越多的開發者對cygwin產生了興趣。本文將對其作一介紹。
2 機理
cygnus當初首先把gcc,gdb,gas等開發工具進行了改進,使他們能夠生成并解釋win32的目標文件。然后,他們要把這些工具移植到windows平臺上去。一種方案是基于win32 api對這些工具的源代碼進行大幅修改,這樣做顯然需要大量工作。因此,他們采取了一種不同的方法——他們寫了一個共享庫(就是cygwin dll),把win32 api中沒有的unix風格的調用(如fork,spawn,signals,select,sockets等)封裝在里面,也就是說,他們基于win32 api寫了一個unix系統庫的模擬層。這樣,只要把這些工具的源代碼和這個共享庫連接到一起,就可以使用unix主機上的交叉編譯器來生成可以在windows平臺上運行的工具集。以這些移植到windows平臺上的開發工具為基礎,cygnus又逐步把其他的工具(幾乎不需要對源代碼進行修改,只需要修改他們的配置腳本)軟件移植到windows上來。這樣,在windows平臺上運行bash和開發工具、用戶工具,感覺好像在unix上工作。
關于cygwin實現的更詳細描述,請參考http://cygwin.com/cygwin-ug-net/highlights.html.
3 安裝設置cygwin
3.1 安裝
要安裝網絡版的cygwin,可以到http://cygwin.com,點擊"Install Cygwin Now!"。這樣會先下載一個叫做setup.exe的GUI安裝程序,用它能下載一個完整的cygwin。按照每一屏的指示可以方便的進行安裝。
3.2 環境變量
開始運行bash之前,應該設置一些環境變量。cygwin提供了一個.bat批處理文件,里面已經設置好了最重要的環境變量。通過它來啟動bash是最安全的辦法。這個.bat文件安裝在cygwin所在的根目錄下。 可以隨意編輯該文件。
CYGWIN變量用來針對cygwin運行時系統進行多種全局設置。開始時,可以不設置CYGWIN或者在執行bash前用類似下面的格式在dos框下把它設為tty
C:/> set CYGWIN=tty notitle glob
PATH變量被cygwin應用程序作為搜索可知性文件的路徑列表。當一個cygwin進程啟動時,該變量被從windows格式(e.g. C:/WinNT/system32;C:/WinNT)轉換成unix格式(e.g., /WinNT/system32:/WinNT)。如果想在不運行bash的時候也能夠使用cygwin工具集,PATH起碼應該包含x:/cygwin/bin,其中x:/cygwin 是你的系統中的cygwin目錄。
HOME變量用來指定主目錄,推薦在執行bash前定義該變量。當cygwin進程啟動時,該變量也被從windows格式轉換成unix格式,例如,作者的機器上HOME的值為C:/(dos命令set HOME就可以看到他的值,set HOME=XXX可以進行設置),在bash中用echo $HOME看,其值為/cygdrive/c.
TERM變量指定終端型態。如果美對它進行設置,它將自動設為cygwin。
LD_LIBRARY_PATH被cygwin函數dlopen()作為搜索.dll文件的路徑列表,該變量也被從windows格式轉換成unix格式。多數Cygwin應用程序不使用dlopen,因而不需要該變量。
3.3 改變cygwin的最大存儲容量
Cygwin程序缺省可以分配的內存不超過384 MB(program+data)。多數情況下不需要修改這個限制。然而,如果需要更多實際或虛擬內存,應該修改注冊表的HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER區段。田家一個DWORD鍵heap_chunk_in_mb并把它的值設為需要的內存限制,單位是十進制MB。也可以用cygwin中的regtool完成該設置。例子如下:
regtool -i set /HKLM/Software/Cygnus/ Solutions/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygnus/ Solutions/Cygwin
4 使用cygwin這一段講一下cygwin和傳統unix系統的不同之處。
4.1 映射路徑名
4.1.1 引言
cygwin同時支持win32和posix風格的路徑,路徑分隔符可以是正斜杠也可以是反斜杠。還支持UNC路徑名。(在網絡中,UNC是一種確定文件位置的方法,使用這種方法用戶可以不關心存儲設備的物理位置,方便了用戶使用。在Windows操作系統,Novell Netware和其它操作系統中,都已經使用了這種規范以取代本地命名系統。在UNC中,我們不用關心文件在什么盤(或卷)上,不用關心這個盤(或卷)所在服務器在什么地方。我們只要以下面格式就可以訪問文件:
//服務器名/共享名/路徑/文件名
共享名有時也被稱為文件所在卷或存儲設備的邏輯標識,但使用它的目的是讓用戶不必關心這些卷或存儲設備所在的物理位置。)
符合posix標準的操作系統(如linux)沒有盤符的概念。所有的絕對路徑都以一個斜杠開始,而不是盤符(如c:)。所有的文件系統都是其中的子目錄。例如,兩個硬盤,其中之一為根,另一個可能是在/disk2路徑下。
因為許多unix系統上的程序假定存在單一的posix文件系統結構,所以cygwin專門維護了一個針對win32文件系統的內部posix視圖,使這些程序可以在windows下正確運行。在某些必要的情況下,cygwin會使用這種映射來進行win32和posix路徑之間的轉換。
4.1.2 cygwin mount表
cygwin中的mount程序用來把win32盤符和網絡共享路徑映射到cygwin的內部posix目錄樹。這是與典型unix mount程序相似的概念。對于那些對unix不熟悉而具有windows背景的的人來說,mount程序和早期的dos命令join非常相似,就是把一個盤符作為其他路徑的子目錄。
路徑映射信息存放在當前用戶的cygwin mount表中,這個mount table 又在windows的注冊表中。這樣,當該用戶下一次登錄進來時,這些信息又從注冊表中取出。mount 表分為兩種,除了每個用戶特定的表,還有系統范圍的mount表,每個cygwin用戶的安裝表都繼承自系統表。系統表只能由擁有合適權限的用戶(windows nt的管理員)修改。
當前用戶的mount表可以在注冊表"HKEY_CURRENT_USER/Software/Red Hat, Inc./Cygwin/mounts v" 下看到。系統表存在HKEY_LOCAL_MACHINE下。
posix根路徑/缺省指向系統分區,但是可以使用mount命令重新指向到windows文件系統中的任何路徑。cygwin從win32路徑生成posix路徑時,總是使用mount表中最長的前綴。例如如果c:被同時安裝在/c和/,cygwin將把C:/foo/bar轉換成/c/foo/bar.
如果不加任何參數地調用mount命令,會把Cygwin當前安裝點集合全部列出。在下面的例子中,c盤是POSIX根,而d盤被映射到/d。本例中,根是一個系統范圍的安裝點,它對所有用戶都是可見的,而/d僅對當前用戶可見。
c:/> mount
f:/cygwin/bin on /usr/bin type system (binmode)
f:/cygwin/lib on /usr/lib type system (binmode)
f:/cygwin on / type system (binmode)
e:/src on /usr/src type system (binmode)
c: on /cygdrive/c type user (binmode,noumount)
e: on /cygdrive/e type user (binmode,noumount)
還可以使用mount命令增加新的安裝點,用umount刪除安裝點。
當Cygwin不能根據已有的安裝點把某個win32路徑轉化為posix路徑時,cygwin會自動把它轉化到一個處于缺省posix路徑/cygdrive下的的一個安裝點. 例如,如果Cygwin 訪問Z:/foo,而Z盤當前不在安裝表內,那么Z:/將被自動轉化成/cygdrive/Z.
可以給每個安裝點賦予特殊的屬性。自動安裝的分區顯示為“auto”安裝。安裝點還可以選擇是"textmode"還是 "binmode",這個屬性決定了文本文件和二進制文件是否按同樣的方式處理。
4.1.3 其他路徑相關信息
cygpath工具提供了在shell腳本中進行win32-posix路徑格式轉換的能力。
HOME, PATH,和LD_LIBRARY_PATH環境變量會在cygwin進程啟動時自動被從Win32格式轉換成了POSIX格式(例如,如果存在從該win32路徑到posix路徑的安裝,會把c:/cygwin/bin轉為/bin)。
4.2 Cygpath使用心得
4.2.1.在cygwin里訪問Windows盤
cd /cygdrive/c
cd c:
4.2.2.整合cygwin命令到Windows中
假設cygwin安裝在d:/develop/cygwin,則將d:/develop/cygwin/bin添加到系統變量PATH中(最好加在windows前面,這樣的話,有些相同的命令的話,是先執行cygwin的命令,而不是windows命令,比如find)
就可以直接在cmd.exe下面執行tar czvf xxx.tgz ./
基本上所有的命令都可以用了,包括ls,more,less,find,grep等。
4.2.3.使用TGZ備份
將cygwin的BIN加入到PATH
建一個BAT文件:
@echo off
d:
cd d:/website/8thmanage
tar czvf 8thmanage.tgz 8thmanage
4.2.4.Windows使用SHELL腳本
將cygwin的BIN加入到PATH
在$CYGWIN的目錄/var/下面建一腳本t.sh,注意,t.sh里面的路徑,都是相對于$CYGWIN的,里面需要訪問C盤的,請用/cygdrive/c/
在Windows下執行:
d:/cygwin/bin/bash d:/cygwin/var/t.sh
(可以定期執行)
4.2.5.同步Windows系統用戶
mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group
如果有Domain的話,需要加上-d domainname
4.2.6.安裝系統服務
cygrunsrv
4.2.7.cygwing下使用rsync
a.安裝rsync組件
b.進入cygwin,配置服務器
vi /etc/rsyncd.conf
...screts file=/etc/tom.ipaddr.pas
配置文件,參考我寫的另外一篇rsync的文章,注意:密碼文件權限必須是0400
chmod 0400 /etc/tom.ipaddr.pas
c.啟動服務端
rsync --daemon
d.客戶端同步
在客戶端的cygwin下面,運行rsync同步,具體命令,請參考另外一篇rsync的文章。
4.2.8.cygwin下使用SSHD
a.需要安裝了cygrunsrc,openssh
b.運行ssh-host-config -y
一路回車,直到出現CYGWIN=時,輸入tty ntsec,再回車,
(或者,增加一系統環境變量CUGWIN=nesec tty)
c.已經安裝好SSHD服務到你的Windows服務中,可以直接在服務中啟動,關閉。
(cygrunsrc -S sshd或者net start sshd)
4.2.9.中文顯示
1). 編輯用戶home目錄下的文件.inputc,去除以下幾行的注釋:
set meta-flag on
# 關閉bash命令行8字節字符轉義符的轉換
set convert-meta off
# 使bash命令行支持8字節字符輸出
set output-meta on
set input-meta on
2) 編輯用戶home目錄下的文件.bash_profile,在文件末尾加上下面幾行:
alias ls='ls --color --show-control-chars'
export LC_ALL=zh_CN.GB23122
export LC_CTYPE=zh_CN.GB2312
export LANG=zh_CN.GB2312
export XMODIFIERS="@im=Chinput"3
stty cs8 -istrip
stty pass8
# Update: 少了這個less就不支持中文了
export LESSCHARSET=latin1
3)經過以上過程后,重啟cygwin,就應許支持中文了,當然,如果要改變home目錄則要編輯cygwin.bat,具體如下:
在bash命令之前加入set HOME=<用戶目錄>,比用戶目錄設置在G:/home。
在新設定的<用戶目錄>里創建文件.inputc和.bash_profile
由于用慣了windows,所以想在資源管理器里創建這兩個文件,
所以干脆先跑到bash里用echo
創建這兩個文件。
echo a>.inputc
echo a>.bash_profile
然后用你喜愛的編輯器編輯之。
要是ls還有亂碼,vi ~/.bashrc中,修改:
alias ls=’ls -hF –show-control-chars –color=tty’
cygwin.bat腳本為:
@echo off
set MAKE_MODE=UNIX

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人国产在线视频| 久久久国产影院| 精品成人69xx.xyz| 日韩欧美亚洲成人| 精品国产乱码久久久久酒店| 国产精品青草久久久久福利99| 亚洲欧美中文日韩在线v日本| 精品国偷自产在线视频99| 91国内揄拍国内精品对白| 日韩免费观看高清| 97在线精品视频| 亚洲va码欧洲m码| 亚洲偷欧美偷国内偷| 国产97在线观看| 91精品国产自产在线观看永久| 亚洲美女精品成人在线视频| 97色在线视频观看| 亚洲国产欧美在线成人app| 欧美华人在线视频| 欧美成人性生活| 国产精品三级网站| 最近2019免费中文字幕视频三| 成人激情电影一区二区| 久久久久亚洲精品| 在线日韩精品视频| 欧美性猛交丰臀xxxxx网站| 国产欧美一区二区三区久久人妖| 国产日产亚洲精品| 97高清免费视频| 国产z一区二区三区| zzijzzij亚洲日本成熟少妇| 亚洲第一网中文字幕| 亚洲香蕉av在线一区二区三区| 国产精品亚洲欧美导航| 久久视频国产精品免费视频在线| 91亚洲精品在线| 日韩视频免费观看| 欧美另类99xxxxx| 欧美视频第一页| 亚洲风情亚aⅴ在线发布| 国产欧美日韩视频| 欧美在线一区二区三区四| 欧美性猛交xxxx乱大交3| 亚洲天堂成人在线| 亚洲黄色av女优在线观看| 久久久噜久噜久久综合| 国产成人一区二区三区电影| 久久人体大胆视频| 欧美国产视频日韩| 国产精品久久一区主播| 亚洲免费精彩视频| 日本欧美中文字幕| 国产精品电影一区| 国产精品一区专区欧美日韩| 欧美亚洲日本黄色| 欧美大片在线免费观看| 国产欧美日韩亚洲精品| 亚洲一区二区中文字幕| 麻豆国产va免费精品高清在线| 日本道色综合久久影院| 少妇精69xxtheporn| 亚洲永久免费观看| 亚洲成人精品视频在线观看| 91精品啪aⅴ在线观看国产| 日韩成人av在线| 日韩激情第一页| 久久国产精品首页| 一区二区成人av| 久久久久久伊人| 亚洲国产精品资源| 亚洲全黄一级网站| 成人网欧美在线视频| 国产精品一区专区欧美日韩| 98精品国产高清在线xxxx天堂| 日韩人在线观看| 亚洲一区美女视频在线观看免费| 亚洲美女av在线| 亚洲欧美国产日韩中文字幕| 久久天天躁狠狠躁夜夜躁| 色综合天天综合网国产成人网| 久久久国产精品亚洲一区| 欧美日韩国产va另类| 欧美成年人网站| 亚洲片在线资源| 国模吧一区二区三区| 日韩av日韩在线观看| 亚洲国产精彩中文乱码av| 在线视频欧美日韩精品| 在线观看日韩专区| 亚洲精品美女网站| 成人精品视频久久久久| 91在线观看免费高清完整版在线观看| 亚洲精品www久久久久久广东| 欧美—级a级欧美特级ar全黄| 欧美丝袜美女中出在线| 久久久综合免费视频| 岛国精品视频在线播放| 51精品国产黑色丝袜高跟鞋| 日韩天堂在线视频| 亚洲久久久久久久久久| 国产精品久久久久7777婷婷| xxxx欧美18另类的高清| 日韩电影网在线| 国产精品9999| 欧美精品videosex极品1| 久久久免费在线观看| 日韩精品视频免费专区在线播放| 日本高清+成人网在线观看| 欧美一级片一区| 久久天天躁狠狠躁夜夜躁| 亚洲精品白浆高清久久久久久| 2020国产精品视频| 国产精品永久免费| 九九热精品视频在线播放| 国产精品爽爽爽爽爽爽在线观看| 欧美成人亚洲成人日韩成人| 91精品国产乱码久久久久久久久| 亚洲成人网在线| 欧美乱大交做爰xxxⅹ性3| 久久精品91久久久久久再现| 国产91对白在线播放| 日韩国产精品一区| 中文字幕亚洲第一| 国产精品视频专区| 日韩日本欧美亚洲| 性金发美女69hd大尺寸| 欧美巨乳美女视频| 综合av色偷偷网| 久久精品国产亚洲精品| 欧美在线激情网| 欧美激情精品久久久久久变态| 91久久精品国产91性色| 福利精品视频在线| 日韩的一区二区| 国产精品网红直播| 欧美国产日韩视频| 国产精品稀缺呦系列在线| 亚洲美女又黄又爽在线观看| 91在线高清视频| 91精品国产亚洲| 日韩欧美亚洲一二三区| 91精品视频免费看| 日韩二区三区在线| 亚洲欧洲自拍偷拍| 亚洲福利在线看| 国产精品久久久久久久久久久久| 国产网站欧美日韩免费精品在线观看| 欧美精品在线视频观看| 精品国产户外野外| 久久噜噜噜精品国产亚洲综合| 亚洲摸下面视频| 国产亚洲综合久久| 亚洲欧洲在线观看| 国产精品高潮呻吟久久av无限| 欧美激情视频播放| 久久精品国产成人精品| 日韩欧美999| 精品久久久久国产| 91久热免费在线视频| 亚洲国产精品系列| 欧美精品在线免费观看| 一区二区在线免费视频| 国产精品999999| 国产91精品不卡视频|