posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          編譯《UNIX環境高級編程》中的第一個程序

          Posted on 2007-08-03 01:13 ZelluX 閱讀(2235) 評論(2)  編輯  收藏 所屬分類: C/C++
          如果直接編譯myls.c,會報錯
          /tmp/cceQcwN0.o: In function `main':
          myls.c:(.text+0x24): undefined reference to `err_quit'
          myls.c:(.text+0x5b): undefined reference to `err_sys'
          collect2: ld 返回 1

          需要下載隨書附帶的源代碼并編譯所需的庫文件
          源代碼下載:http://www.aygfsteel.com/Files/zellux/apue.linux3.tar.Z.zip
          (下載后去掉.zip后綴)

          apue/README 文件中有具體的編譯方法,對于Linux系統比較簡單,進入lib.rhlin目錄,然后運行make,就會在apue目錄下生成libmisc.a,以后編譯的時候連接這個庫就行了。

          以書中的第一個程序myls.c為例
          #include <sys/types.h>
          #include 
          <dirent.h>

          #include 
          "ourhdr.h"

          int main(int argc, char* argv[])
          {
              DIR             
          *dp;
              
          struct dirent   *dirp;

              
          if (argc != 2)
                  err_quit(
          "a single argument (the directory name) is required");

              
          if ( (dp = opendir(argv[1])) == NULL)
                  err_sys(
          "can't open %s", argv[1]);

              
          while ( (dirp = readdir(dp)) != NULL)
                  printf(
          "%s\n", dirp->d_name);

              closedir(dp);
              exit(
          0);
          }

          $ gcc myls.c libmisc.a
          出現幾個Warning:
          libmisc.a(strerror.o): In function `strerror':
          strerror.c:(.text+0x18): warning: `sys_errlist' is deprecated; use `strerror' or `strerror_r' instead
          strerror.c:(.text+0xf): warning: `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
          看來這本書的確太老了
          $ ./a.out .
          就會列出當前目錄下的所有文件


          評論

          # re: 編譯《UNIX環境高級編程》中的第一個程序  回復  更多評論   

          2008-02-20 22:25 by donnie0219
          哥們兒,我也一樣.

          # re: 編譯《UNIX環境高級編程》中的第一個程序  回復  更多評論   

          2008-12-21 22:22 by fanzhiyong
          http://www.apuebook.com/ 下載源碼,并按照readme作,就沒有你說的問題
          主站蜘蛛池模板: 绥芬河市| 定日县| 南宁市| 昔阳县| 德州市| 廊坊市| 西宁市| 苏尼特右旗| 辽阳市| 富顺县| 宁德市| 微山县| 渝北区| 奇台县| 航空| 卢氏县| 黔江区| 大冶市| 仪陇县| 六盘水市| 盈江县| 永清县| 天气| 怀安县| 深州市| 汶川县| 青神县| 开化县| 金平| 松溪县| 赣榆县| 敦煌市| 永顺县| 固始县| 于田县| 淮安市| 舞阳县| 云龙县| 文安县| 潞城市| 扎鲁特旗|