亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: unix環(huán)境高級(jí)編程和網(wǎng)絡(luò)編程源代碼能在mac下編譯通過嗎 [打印本頁(yè)]

作者: cainong_111    時(shí)間: 2013-07-09 18:46
標(biāo)題: unix環(huán)境高級(jí)編程和網(wǎng)絡(luò)編程源代碼能在mac下編譯通過嗎
聽說(shuō)mac os基于unix,想買個(gè)mac pro學(xué)習(xí)unix下的編程,不知道能不能編譯這兩本書上的源代碼還有能練習(xí)unix的shell程序設(shè)計(jì)嗎
作者: timespace    時(shí)間: 2013-07-12 17:38
可以過,但有些小修改,動(dòng)手嘗試下。
作者: timespace    時(shí)間: 2013-07-12 17:57
BTW, 買MacBook Pro可以學(xué)UNIX編程,學(xué)習(xí)娛樂兩不誤,但用Mac Pro有些殺雞用牛刀的感覺。。。OS X自從10.5 Leopard就是獲得認(rèn)證的UNIX系統(tǒng),遵循Single UNIX Specification,規(guī)范文檔寫的不錯(cuò),可以當(dāng)參考手冊(cè)看。
作者: cgweb    時(shí)間: 2013-09-09 18:36
當(dāng)然沒問題,不過首先要在你的MAC系統(tǒng)安裝XCODE然后在擴(kuò)展插件里安裝GCC,目前版本已經(jīng)淘汰了gcc編譯器采用了更好的編譯器。
作者: fly3ds    時(shí)間: 2013-10-04 15:26
我表示懷疑, 作者寫這書的時(shí)候,Mac還沒出世。
作者: cgweb    時(shí)間: 2013-10-08 20:26
如果我猜的沒錯(cuò),樓上朋友所指的Unix編程圖書應(yīng)該是W.Richard Stevens寫的UNIX環(huán)境編程,這本書最初創(chuàng)作于1996-1999年間,作者網(wǎng)站(http://www.kohala.com/start/),與此同時(shí)蘋果操作系統(tǒng)Mac OS 9已經(jīng)發(fā)布,在蘋果硬件方面已發(fā)布了Power Macintosh G4,而此時(shí)的蘋果掌門人由喬布斯再次接管。
作者: fly3ds    時(shí)間: 2013-10-12 14:17
本帖最后由 fly3ds 于 2013-10-12 14:20 編輯
cgweb 發(fā)表于 2013-10-08 20:26
如果我猜的沒錯(cuò),樓上朋友所指的Unix編程圖書應(yīng)該是W.Richard Stevens寫的UNIX環(huán)境編程,這本書最初創(chuàng)作于1 ...


好吧,就算你說(shuō)的對(duì)。但是這書里的程序能否在Mac OS上跑起來(lái)還是未知的,沒聽說(shuō)過有誰(shuí)把這書里的程序搞到Mac上去運(yùn)行起來(lái)。

我估計(jì),最起碼,要做相當(dāng)?shù)男薷牟拍芘芷饋?lái)那么一兩個(gè)程序;可能改個(gè)幾個(gè)程序之后,就沒耐心了,一大堆系統(tǒng)調(diào)用、庫(kù)函數(shù)、配置文件,鬼知道到底干什么用的,在Mac上有沒有實(shí)現(xiàn),或者有沒有類似的實(shí)現(xiàn)。

各個(gè)Unix系統(tǒng)之間的差異其實(shí)還是挺大的。
作者: cgweb    時(shí)間: 2013-10-13 16:14
你說(shuō)的也對(duì)
作者: timespace    時(shí)間: 2014-01-24 18:18
UNIX的具體實(shí)現(xiàn)差異大,但標(biāo)準(zhǔn)接口早就穩(wěn)定很多年了,尤其是認(rèn)證UNIX(如HP UX, IBM AIX, Oracle Solaris, Mac OS X 10.5+),必須實(shí)現(xiàn)POSIX.1-2001/SUS v3,而APUE的核心內(nèi)容都在上述標(biāo)準(zhǔn)范圍內(nèi)。

APUE(UNIX環(huán)境高級(jí)編程)都有三個(gè)版本了,從官網(wǎng)下載2005年的第二版,書中覆蓋了FreeBSD 5.2.1/Linux 2.4.22/Solaris 9/Mac OS X 10.3,比較古老了。下面我在2013年發(fā)布Mac OS X 10.9(gcc 4.2.1基于LLVM 3.3)上編譯所有代碼

1. 目錄樹頂層部分內(nèi)容。
  1. bash-3.2 $ll | head -20
  2. total 1728
  3. drwxr-xr-x  248 Guorui  staff  8432  1 24 16:59 ./
  4. drwx------+  11 Guorui  staff   374  1 24 16:37 ../
  5. -r--r--r--    1 Guorui  staff   656  5 29  2005 DISCLAIMER
  6. -rw-r--r--    1 Guorui  staff   552  5 29  2005 Make.defines.freebsd
  7. -rw-r--r--    1 Guorui  staff   568  5 29  2005 Make.defines.linux
  8. -rw-r--r--    1 Guorui  staff   555  1 24 16:59 Make.defines.macos
  9. -rw-r--r--    1 Guorui  staff   550  5 29  2005 Make.defines.solaris
  10. -rw-r--r--    1 Guorui  staff   678  5 29  2005 Makefile
  11. -rw-r--r--    1 Guorui  staff  1511  5 30  2005 README
  12. drwxr-xr-x   11 Guorui  staff   374  5 28  2005 advio/
  13. drwxr-xr-x   14 Guorui  staff   476  5 29  2005 call/
  14. drwxr-xr-x   24 Guorui  staff   816  5 29  2005 calld/
  15. drwxr-xr-x   11 Guorui  staff   374  5 28  2005 daemons/
  16. drwxr-xr-x    7 Guorui  staff   238  5 28  2005 datafiles/
  17. drwxr-xr-x    9 Guorui  staff   306  5 28  2005 db/
  18. drwxr-xr-x   13 Guorui  staff   442  5 28  2005 environ/
  19. drwxr-xr-x   17 Guorui  staff   578  5 28  2005 exercises/
  20. lrwxr-xr-x    1 Guorui  staff    13  5 28  2005 fig1.10@ -> proc/shell2.c
  21. lrwxr-xr-x    1 Guorui  staff    10  5 28  2005 fig1.3@ -> file/ls1.c
復(fù)制代碼
2. 編譯過程。
1)首先讀下README,然后進(jìn)入 Make.defines.macos中修改當(dāng)前源碼所在目錄,完畢。

2)輸入“make macos”開始編譯,警告很多,直到出現(xiàn)一個(gè)未定義符號(hào)的鏈接錯(cuò)誤終止編譯了:
  1. gcc -ansi -I/Users/Guorui/Downloads/apue.2e/include -Wall -DMACOS -DDEBUG -o call main.o call.o put.o take.o takeput.o escape.o loop.poll.o ../sockets/clconn.o  ../lib/libapue.a
  2. clang: warning: argument unused during compilation: '-ansi'
  3. Undefined symbols for architecture x86_64:
  4.   "_CMSG_LEN", referenced from:
  5.       _recv_fd in libapue.a(recvfd.o)
  6. ld: symbol(s) not found for architecture x86_64
  7. clang: error: linker command failed with exit code 1 (use -v to see invocation)
  8. make[1]: *** [call] Error 1
  9. make: *** [macos] Error 1
復(fù)制代碼
3) 尋找和解決編譯錯(cuò)誤。發(fā)現(xiàn)宏'CMSG_LEN'未定義,因?yàn)镺S X在x86-64架構(gòu)下的兼容標(biāo)準(zhǔn)已經(jīng)變?yōu)閲?yán)格符合SUSv3了,
默認(rèn)去掉了一些傳統(tǒng)UNIX的擴(kuò)展函數(shù)。不妨再加入那些擴(kuò)展函數(shù),于是在Make.defines.macos加入'-D_DARWIN_C_SOURCE'。
再次編譯,依然很多警告,無(wú)視,幸好全部成功。

4) 隨便找了一個(gè)例子運(yùn)行,用系統(tǒng)調(diào)用生成空洞文件。
  1. bash-3.2 $l
  2. access*      changemod.c  fileflags.c  ftw4.c       linux.mk     macos.mk     solaris.mk   umask*       zap.c
  3. access.c     devrdev*     filetype*    hello*       longpath*    mycd*        testerror*   umask.c
  4. cdpwd*       devrdev.c    filetype.c   hello.c      longpath.c   mycd.c       testerror.c  unlink*
  5. cdpwd.c      file.hole    freebsd.mk   hole*        ls1*         seek*        uidgid*      unlink.c
  6. changemod*   fileflags*   ftw4*        hole.c       ls1.c        seek.c       uidgid.c     zap*
  7. bash-3.2 $./hole
  8. bash-3.2 $ll file.hole
  9. -rw-r--r--  1 Guorui  staff  16394  1 24 18:11 file.hole
復(fù)制代碼
5. 總體來(lái)看只新增了一個(gè)宏就完成全部編譯,沒任何代碼修改,沒什么難度。至于研究具體的調(diào)用行為,則是看這本書的目的了,
而且SUSv3中的標(biāo)準(zhǔn)工具和接口行為正確性,OpenGroup認(rèn)證UNIX時(shí)已經(jīng)測(cè)試了,無(wú)需我們擔(dān)心。

作者: zm_wl    時(shí)間: 2014-03-19 14:27
樓上很牛逼   
作者: incle    時(shí)間: 2014-06-03 14:56
good job//
作者: lxy572535121    時(shí)間: 2015-08-01 17:21
fly3ds 發(fā)表于 2013-10-04 15:26
我表示懷疑, 作者寫這書的時(shí)候,Mac還沒出世。

表示不服,你有認(rèn)真看過這本書么
作者: 鉆石與黃金    時(shí)間: 2015-09-16 15:39
不錯(cuò)俄啊。。。。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2