1. 程式人生 > >UNIX環境高階程式設計、UNIX網路程式設計(卷一)環境搭建

UNIX環境高階程式設計、UNIX網路程式設計(卷一)環境搭建

最近學習這兩本書,在直接編譯書本源程式時,出現標頭檔案“apue.h”(UNIX環境高階程式設計)及“unp.h”(UNIX網路程式設計)錯誤,在這裡坐下配置的筆記。

首先需要安裝Linux系統。(在VirtualBox虛擬機器裡安裝Centos6.7的Linux系統)

一、APUE

2、將下載的壓縮包移動至自己的工作目錄

[[email protected] Downloads]$ cp src.3e.tar.gz /home/luokuanh/MySelf/unix/apue/

3、使用cd 進入到工作目錄下,並解壓壓縮檔案

[[email protected] Downloads]$ cd /home/luokuanh/MySelf/unix/apue/

[[email protected] apue]$ tar -xzvf src.3e.tar.gz 

4、解壓後可以在當前工作目錄下看到apue.3e目錄,進入到該目錄下的lib/目錄

[[email protected] apue]$ cd apue.3e/lib/

5、在lib目錄下直接執行make命令(lib裡已自帶Makefile檔案)編譯動態連結庫

[[email protected] lib]$ make

出現如下程式碼:

[[email protected] lib]$ make
ar rv libapue.a bufargs.o cliconn.o clrfl.o daemonize.o error.o errorlog.o lockreg.o locktest.o openmax.o pathalloc.o popen.o prexit.o prmask.o ptyfork.o ptyopen.o readn.o recvfd.o senderr.o sendfd.o servaccept.o servlisten.o setfd.o setfl.o signal.o signalintr.o sleepus.o spipe.o tellwait.o ttymodes.o writen.o
ar: creating libapue.a
a - bufargs.o
a - cliconn.o
a - clrfl.o
a - daemonize.o
a - error.o
a - errorlog.o
a - lockreg.o
a - locktest.o
a - openmax.o
a - pathalloc.o
a - popen.o
a - prexit.o
a - prmask.o
a - ptyfork.o
a - ptyopen.o
a - readn.o
a - recvfd.o
a - senderr.o
a - sendfd.o
a - servaccept.o
a - servlisten.o
a - setfd.o
a - setfl.o
a - signal.o
a - signalintr.o
a - sleepus.o
a - spipe.o
a - tellwait.o
a - ttymodes.o
a - writen.o
echo libapue.a
libapue.a
此時在lib資料夾裡可以看到libapue.a檔案,這就是使用make編譯出的動態連結庫。

6、將lib目錄下的libapue.a檔案移至/usr/lib/目錄中(需在root使用者裡)

[[email protected] lib]$ su -
Password: 
[[email protected] ~]# 
[[email protected] ~]# cp /home/luokuanh/MySelf/unix/apue/apue.3e/lib/libapue.a /usr/lib/

7、將apue.3e/includ/目錄下的apue.h移至/usr/include/目錄下

[[email protected]

~]# cp /home/luokuanh/MySelf/unix/apue/apue.3e/include/apue.h /usr/include/

8、此時就可以編譯書本的原始碼了

[[email protected] unit10]$ gcc ls1.c -o ls1 -lapue

注意編譯條件結尾必須加上-lapue動態連結庫,不然程式設計出錯。


二、UNP

2、將下載的壓縮包移動至自己的工作目錄

[[email protected] Downloads]$ cp unpv13e.tar.gz /home/luokuanh/MySelf/unix/unp/

3、使用cd 進入到工作目錄下,並解壓壓縮檔案

[[email protected] Downloads]$ cd /home/luokuanh/MySelf/unix/unp/

[[email protected] apue]$ tar -xzvf unpv13e.tar.gz

4、解壓後可以在當前工作目錄下看到unpv13e 目錄,進入到該目錄下的lib/、libfree/、libgau/目錄下執行make

[[email protected] unpv13e]$ cd lib

[[email protected] lib]$ make

[[email protected] lib]$ make
ar rv ../libunp.a connect_nonb.o connect_timeo.o daemon_inetd.o daemon_init.o dg_cli.o dg_echo.o error.o get_ifi_info.o gf_time.o host_serv.o family_to_level.o mcast_leave.o mcast_join.o mcast_get_if.o mcast_get_loop.o mcast_get_ttl.o mcast_set_if.o mcast_set_loop.o mcast_set_ttl.o my_addrs.o read_fd.o readline.o readn.o readable_timeo.o rtt.o signal.o signal_intr.o sock_bind_wild.o sock_cmp_addr.o sock_cmp_port.o sock_ntop.o sock_ntop_host.o sock_get_port.o sock_set_addr.o sock_set_port.o sock_set_wild.o sockfd_to_family.o str_cli.o str_echo.o tcp_connect.o tcp_listen.o tv_sub.o udp_client.o udp_connect.o udp_server.o wraplib.o wrapsock.o wrapstdio.o wrappthread.o wrapunix.o write_fd.o writen.o writable_timeo.o
ar: creating ../libunp.a
a - connect_nonb.o
a - connect_timeo.o
a - daemon_inetd.o
a - daemon_init.o
a - dg_cli.o
a - dg_echo.o
a - error.o
a - get_ifi_info.o
a - gf_time.o
a - host_serv.o
a - family_to_level.o
a - mcast_leave.o
a - mcast_join.o
a - mcast_get_if.o
a - mcast_get_loop.o
a - mcast_get_ttl.o
a - mcast_set_if.o
a - mcast_set_loop.o
a - mcast_set_ttl.o
a - my_addrs.o
a - read_fd.o
a - readline.o
a - readn.o
a - readable_timeo.o
a - rtt.o
a - signal.o
a - signal_intr.o
a - sock_bind_wild.o
a - sock_cmp_addr.o
a - sock_cmp_port.o
a - sock_ntop.o
a - sock_ntop_host.o
a - sock_get_port.o
a - sock_set_addr.o
a - sock_set_port.o
a - sock_set_wild.o
a - sockfd_to_family.o
a - str_cli.o
a - str_echo.o
a - tcp_connect.o
a - tcp_listen.o
a - tv_sub.o
a - udp_client.o
a - udp_connect.o
a - udp_server.o
a - wraplib.o
a - wrapsock.o
a - wrapstdio.o
a - wrappthread.o
a - wrapunix.o
a - write_fd.o
a - writen.o
a - writable_timeo.o
ranlib ../libunp.a
[[email protected] lib]$ 
[[email protected] unpv13e]$ cd libfree/

[[email protected] libfree]$ make

[[email protected] libfree]$ make
ar rv ../libunp.a in_cksum.o inet_ntop.o inet_pton.o
a - in_cksum.o
a - inet_ntop.o
a - inet_pton.o
ranlib ../libunp.a
[[email protected] libfree]$ 
[[email protected] unpv13e]$ cd libgai/

[[email protected] libgai]$ make

[[email protected] libgai]$ make
ar rv ../libunp.a 
ranlib ../libunp.a
[[email protected] libgai]$ 

5、在unp13e目錄下執行./configure,同時可以在unp13e目錄下看到生成的動態連結檔案libunp.a

[[email protected] unpv13e]$ ./configure 

生成config.h檔案

6、將libunp.a移至/usr/lib/,config.h、lib/unp.h及lib/addrinfo.h移至/usr/include/目錄

移動前將unp.h中的

第7行: 7 #include    "../config.h"改為 #include    "config.h" 

第249行:249 # include   "../lib/addrinfo.h"改為# include   "addrinfo.h"

[[email protected] unpv13e]$ su -
Password: 
[[email protected] ~]# cp /home/luokuanh/MySelf/unix/unp/unpv13e
unpv13e/        unpv13e.tar.gz  
[[email protected] ~]# cp /home/luokuanh/MySelf/unix/unp/unpv13e/libunp.a /usr/lib/

[[email protected] ~]# cp /home/luokuanh/MySelf/unix/unp/unpv13e/config.h /usr/include/ 

[[email protected] ~]# cp /home/luokuanh/MySelf/unix/unp/unpv13e/lib/unp.h /usr/include/ 

7、編譯原始碼

[[email protected] intro]$ gcc daytimetcpcli.c -o daytimetcpcli -lunp

完成。