国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 系統(tǒng) > Unix > 正文

multiple definition of `err_sys' 《UNIX環(huán)境高級(jí)編程》

2024-06-28 13:23:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
multiple definition of `err_sys' 《UNIX環(huán)境高級(jí)編程》

本文地址:http://www.CUOXin.com/yhlinux/p/4079930.html

問(wèn)題描述:

[點(diǎn)擊此處直接看解決方案]

在練習(xí)《UNIX環(huán)境高級(jí)編程》APUE程序清單8-7的時(shí)候,codelist8-7.c中用到了codelist15-3.c中的函數(shù)TELL_WAIT(),WAIT_PARENT()及TELL_CHILD()。

codelist8-7.c:

 1 #include "apue.h" 2  3 static void charatatime(char *); 4  5 int main(void) 6 { 7     pid_t    pid; 8     TELL_WAIT(); 9 10     if ((pid = fork()) < 0) {11         err_sys("fork error");12     } else if (pid == 0) {13         WAIT_PARENT();    /* parent goes first */14         charatatime("output from child/n");15     } else {16         charatatime("output from parent/n");17         TELL_CHILD(pid);18     }19     exit(0);20 }21 22 static void charatatime(char *str)23 {24     char    *ptr;25     int    c;26 27     setbuf(stdout, NULL);    /* set unbuffered */28     for (ptr = str; (c = *ptr++) != 0; )29         putc(c, stdout);30 }
codelist8-7.c

codelist15-3.c:

 1 #include "apue.h" 2  3 static int    pfd1[2], pfd2[2]; 4  5 void TELL_WAIT(void) 6 { 7     if (pipe(pfd1) < 0 || pipe(pfd2) < 0) 8         err_sys("pipe error"); 9 }10 11 void TELL_PARENT(pid_t pid)12 {13     if (write(pfd2[1], "c", 1) != 1)14         err_sys("write error");15 }16 17 void WAIT_PARENT(void)18 {19     char    c;20 21     if (read(pfd1[0], &c, 1) != 1)22         err_sys("read error");23     24     if (c != 'p')25         err_quit("WAIT_PARENT: incorrect data");26 }27 28 void TELL_CHILD(pid_t pid)29 {30     if (write(pfd1[1], "p", 1) != 1)31         err_sys("write error");32 }33 34 void WAIT_CHILD(void)35 {36     char    c;37 38     if (read(pfd2[0], &c, 1) != 1)39         err_sys("read error");40     41     if (c != 'c')42         err_quit("WAIT_CHILD: incorrect data");43 }
View Code

在使用命令編譯8-7時(shí),提示以下錯(cuò)誤:

$ gcc codelist8-7.c codelist15-3.c -o 8-7/tmp/ccMDAwpv.o: In function `err_ret':codelist15-3.c:(.text+0x0): multiple definition of `err_ret'/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0x0): first defined here/tmp/ccMDAwpv.o: In function `err_sys':codelist15-3.c:(.text+0xa9): multiple definition of `err_sys'/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0xa9): first defined here/tmp/ccMDAwpv.o: In function `err_exit':codelist15-3.c:(.text+0x15a): multiple definition of `err_exit'/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0x15a): first defined here/tmp/ccMDAwpv.o: In function `err_dump':codelist15-3.c:(.text+0x209): multiple definition of `err_dump'/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0x209): first defined here/tmp/ccMDAwpv.o: In function `err_msg':codelist15-3.c:(.text+0x2b5): multiple definition of `err_msg'/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0x2b5): first defined here/tmp/ccMDAwpv.o: In function `err_quit':codelist15-3.c:(.text+0x360): multiple definition of `err_quit'/tmp/ccXi2EPL.o:codelist8-7.c:(.text+0x360): first defined herecollect2: ld 返回 1

查找網(wǎng)上意見(jiàn)如下:

1. http://bbs.chinaunix.net/thread-3699788-1-1.html

    我想是不是因?yàn)槲以赼pue.h頭文件中,添加了#include "error.c",雖然apue.h中    #ifndef __APUE_H__    #define __APUE_H__復(fù)制代碼但是編譯器對(duì)每個(gè)文件是分別編譯的,所以在文件wait.c和14.6.c中都#include "apue.h",就會(huì)包含兩份error.c文件,而在error.c文件中是函數(shù)的定義(并不是聲明),所以才會(huì)出現(xiàn)這樣的情況。所以我刪除在apue.h中#include "error.c",makefile文件如下:    inc=/home/lee/PRogram/apue/apue.2e/include/    error=/home/lee/program/apue/apue.2e/include/error.c    a.out:14.6.c wait.c            gcc -I $(inc) -o a.out 14.6.c wait.c $(error)復(fù)制代碼apue.h文件中/home/lee/program/apue/apue.2d/include/目錄下。這樣就沒(méi)有問(wèn)題了。不知是不是如我想的這樣。#沒(méi)錯(cuò),而且沒(méi)有充分理由時(shí)盡量不要 include c 文件

以上這條討論講得比較到位吧,原來(lái),我之前按這篇文章的方法[http://blog.csdn.net/quan9ing007/article/details/9929659此方法不好]把 apue.herror.h 都拷貝到 /usr/include 文件夾下了。

其實(shí)按上面的說(shuō)法,不該把在apue.h中#include "error.c",并把 error.c 放到 /usr/include 目錄下的,在每一次編譯時(shí)添加error.c就好。

解決方案(推薦)

因此,只把 apue.h 放到/usr/include目錄下,而由于要經(jīng)常用到error.c,我們將定義一個(gè)error環(huán)境變量,這樣就不必每次都把error.c拷貝到相關(guān)文件夾下參與編譯。

這里假定當(dāng)前用戶是Lee,error.c存放在/home/Lee/code_Lee/APUE/part_of_source/:

sudo cp /home/Lee/code_Lee/APUE/part_of_source/apue.h /usr/include/apue.hsudo chmod a+r /usr/include/apue.hvi /home/Lee/.bashrc 在.bashrc文末添加apue_error變量:  apue_error=/home/Lee/code_Lee/APUE/part_of_source/error.csource ~/.bashrc      /* 這很重要,一定要執(zhí)行 */echo ${apue_error}  /home/Lee/code_Lee/APUE/part_of_source/error.cgcc codelist8-6.c ${apue_error} -o 8-6 成功! gcc codelist8-7.c codelist15-3.c ${apue_error} -o 8-7  成功!!

(完)

參考資料:

1. Linux的環(huán)境變量

  http://www.CUOXin.com/Neddy/archive/2011/03/01/1968018.html

2. linux環(huán)境變量(轉(zhuǎn))

   http://www.CUOXin.com/growup/archive/2011/07/02/2096142.html


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产三级免费观看| 国产美女一区视频| 国产精品欧美色图| 国产日韩欧美精品一区二区三区| 国产字幕在线看| 最新黄网在线观看| 国产福利在线| 在线观看中文字幕的网站| а√最新版地址在线天堂| 尤物网站在线| 99久久免费精品国产免费| 国产精品bbw一区二区三区| 国产黄色片在线观看| 欧美性猛交p30| 国产精品第八页| 国产毛片毛片| 日本在线免费中文字幕| 国产精品四虎| www555久久| 在线一区二区三区精品| 成网站在线观看人免费| 永久免费不卡在线观看黄网站| 青青草视频免费在线观看| 国产对白叫床清晰在线播放| 爱福利在线视频| 一区二区三区免费视频网站| 开心婷婷激情五月| 国产91久久久久蜜臀青青天草二| www.三区| 永久av在线| 伊人222成人综合网| 国产精品伦一区二区三区级视频频 | 国产精品黄页网站在线播放免费 | 在线视频中文字幕| 日本中文字幕视频| www.狠狠操| www.av在线视频| 一个人看的www免费观看视频| 国产欧美黑人| 国产精美视频| 国产黄色免费| 国产黄色片在线观看| 国产女主播在线| 中文字幕不卡免费视频| 免费看的毛片| 99热在线观看免费| 中文字幕毛片| 国产精品伦一区二区三区级视频频 | 日本片在线看| 在线三级av| 四虎a级欧美在线观看| a级在线观看| www在线视频| 九九热视频免费观看| 国产美女被遭强高潮免费网站| 高清在线观看av| 国产成人天天5g影院| 国产一级免费在线观看| 精品推荐国产麻豆剧传媒| 亚洲成av人影片在线观看 | 99久久免费精品国产免费| 伊人影院在线播放| 日本视频一二三区中文字幕| 欧美成人久久电影香蕉| 国产精品一区二区三区四区色| 天堂资源在线中文| 国产wwww| 成人亚洲一区二区三区| 国产人成精品| 永久免费av网站| 二人午夜免费观看在线视频| 国产9色视频| 美女网站在线观看| 国产激情在线视频| 欧美亚洲天堂| 中文av字幕| 国产午夜三区视频在线| 天堂中文在线观看| 国产二级片在线| 国产九色视频| 免费精品国产自产拍观看| 国产精品入口麻豆免费看| www.色婷婷| 在线观看的av网站| 五月天天在线| sese一区| 永久免费网站在线| 国产无遮挡又黄又爽免费网站| 免费国产在线视频| 四虎一区二区三区| 在线黄色.com| 亚洲人成影院在线| 在线a人片免费观看视频| 国产二级片在线| 国产福利片在线| 国产系列在线观看| 午夜国产福利在线| 天天操天天操一操| 麻豆国产视频| 青青草视频在线免费观看| 永久av在线| 伊人网在线视频| av在线1区2区| 操人视频91| 成年网在线观看免费观看网址| 超碰在线观看免费版| 成人欧美日韩| 国产激情视频在线| 69国产精品视频| av小说在线| 日韩国产成人| 超碰在线观看免费| 国产在线观看18| 国产羞羞视频| 国产91足控脚交在线观看| 97人人在线| 嫩草在线播放| 国产经典av| 青青草视频在线免费观看| 免费a级毛片在线播放| 精品中文字幕不卡在线视频| 午夜视频在线看| 精品极品三级久久久久| 操操操综合网| 国产午夜精品一区理论片| 精品国产一区二区三区四区阿崩 | 91麻豆免费在线视频| 国产特级毛片| 夜夜操com| 国产视频福利| 任你操在线观看| 国产叼嘿网站免费观看不用充会员| 在线观看av资源网| 国产尤物视频在线| 亚洲人在线播放| 国产一级二级三级在线观看| 亚洲高清在线免费| 国产精品18久久久久网站| www中文字幕在线观看| 精品麻豆一区二区三区| 黄网在线免费| 欧美黑人乱大交| 国产高清视频免费最新在线| 久久精品国产亚洲777| 亚洲永久免费网站| 国产激情视频在线观看| 成视频年人免费看黄网站| 四虎网站在线观看| 亚洲最新永久观看在线| 国产精品免费视频一区一| 国产免费黄视频在线观看| 色综合久久五月天| 亚洲成a人v欧美综合天堂麻豆| 国产精品入口麻豆免费| 高潮白浆视频| 天堂中文资源在线| 国产精品一区二三区| 欧美日韩一区二区三区在线播放 | 国产三级视频在线看| 青青在线视频| www.色婷婷| 欧美成人亚洲高清在线观看| 永久免费av网站| 中文字幕av高清| 亚洲成a人v欧美综合天堂麻豆| 亚洲一道本在线| 香蕉视频网站在线观看| 97最新国自产拍视频在线完整在线看 | 国产极品视频| 国产国产人免费人成免费视频| 国产一二三视频| 国产偷倩在线播放| 精品欧美不卡一区二区在线观看| 国产h色视频在线观看| 精精国产xxxx视频在线动漫| 在线色视频观看| 日本亚洲精品| 中文字幕在线视频观看| 国产一级视频| 在线午夜视频| 成av人免费青青久| 久久精品最新免费国产成人| 久久综合第一页| 国产欧美黑人| 欧美亚洲天堂| 国产三级在线| www.色婷婷| 国产成人午夜| 国产中文第一页| 2020亚洲男人天堂| 激情网站在线| 伊人资源视频在线| 国产又色又爽又黄刺激在线视频| 国产人成在线观看| 青青草中文字幕| 精品国产美女福利到在线不卡| 在线āv视频| 国产精品18久久久久久久久久| 欧美性猛交xxxxbbbb| 国产精品国产三级国产试看|