Linux下编译《UNIX环境高级编程》的第一个程序时出错的处理方法
<p style="text-indent: 2em;">最近在学习Linux的应用程序开发,选的书籍当然是经典的《<strong><span style="color: rgb(0, 112, 192);">UNIX环境高级编程</span></strong>》,不过在写好第一个代码编译时却遇到了一些问题,比如报错:apue.h:没有那个文件或目录、undefined reference to 'err_quit'、undefined reference to 'err_sys',这里就给大家讲讲如何去解决它,不用谢我哦<img src="/UEditor/dialogs/emotion/images/face/i_f07.gif"/>。</p><p style="text-indent: 0em;"> 这里是我提供给大家的源代码文件以及所需的一些文件,请大家提前下载,链接:<a class="btn btn-success" href="https://pan.baidu.com/s/1hrc70iw" target="_blank">点此下载</a> ,密码:<span style="color: rgb(255, 0, 0);">5nhq</span>。</p><p style="text-align:center"><img src="/uploads/AilsonJack/2018.08.24/1535073970802963.png" onclick="preview_image('/uploads/AilsonJack/2018.08.24/1535073970802963.png')"/></p><p style="text-indent: 2em;">使用<span style="color: rgb(255, 0, 0);">gcc 1-1.c</span>编译该代码时,报出"<span style="color: rgb(255, 0, 0);">致命错误:apue.h:没有那个文件或目录</span>",现在将书籍提供的apue.h放在同一目录时,再次编译,发现又报另外的错误:</p><p style="text-indent: 2em;"><span style="color: rgb(255, 0, 0);">undefined reference to 'err_quit'</span></p><p style="text-indent: 2em;"><span style="color: rgb(255, 0, 0);">undefined reference to 'err_sys'</span><br/></p><p style="text-align:center"><img src="/uploads/AilsonJack/2018.08.24/1535073970247897.png" onclick="preview_image('/uploads/AilsonJack/2018.08.24/1535073970247897.png')"/></p><p style="text-indent: 2em;">因为err_sys和err_quit是作者自己提供的函数,这里需要单独的源代码文件支持,我已经提供给大家了,大家下载即可。</p><p style="text-indent: 2em;">下面是完整的解决办法:</p><p style="text-indent: 2em;">将我提供大家的<span style="color: rgb(255, 0, 0);">include</span>文件夹拷贝到Linux系统中,这里我放在<span style="color: rgb(255, 0, 0);">/home/AilsonJack/me/apue</span>目录中:</p><p style="text-align:center"><img src="/uploads/AilsonJack/2018.08.24/1535073970833902.png" onclick="preview_image('/uploads/AilsonJack/2018.08.24/1535073970833902.png')"/></p><p style="text-indent: 2em;">然后执行命令:<span style="color: rgb(255, 0, 0);">vim /etc/profile</span>,在profile文件的末尾添加如下内容,保存退出:</p><p style="text-indent: 2em;"><span style="color: rgb(0, 112, 192);">#gcc找到头文件的路径</span></p><p style="text-indent: 2em;"><span style="color: rgb(0, 112, 192);">C_INCLUDE_PATH=/usr/include/libxml2:/home/AilsonJack/me/apue/include</span></p><p style="text-indent: 2em;"><span style="color: rgb(0, 112, 192);">export C_INCLUDE_PATH</span></p><p style="text-indent: 2em;">接着执行命令:<span style="color: rgb(255, 0, 0);">source /etc/profile</span></p><p style="text-indent: 2em;">接下来,编译1-1.c文件:<span style="color: rgb(255, 0, 0);">gcc 1-1.c</span>,没有报错吧,执行<span style="color: rgb(255, 0, 0);">./a.out /home</span><br/></p><p style="text-align:center"><img src="/uploads/AilsonJack/2018.08.24/1535073971266801.png" onclick="preview_image('/uploads/AilsonJack/2018.08.24/1535073971266801.png')"/></p><p style="text-indent: 2em;">至此已经解决了编译第一个程序所出现的问题,剩下的就好好学习吧。<br/></p>
你可能也喜欢:
暂无评论,要不要来个沙发
发表评论
JLink V9掉固件修复(灯不亮) 3Zephyr笔记2 - 在STM32F429上运行HelloWorld 2计算NandFlash要传入的行地址和列地址 1Linux MMC子系统 - 6.eMMC 5.1工作模式-设备识别模式 0Linux MMC子系统 - 5.eMMC 5.1工作模式-引导模式 0Linux MMC子系统 - 4.eMMC 5.1常用命令说明(2) 0
标签云
Linux嵌入式实用技巧ARM内核学习问题集合CC++编程语言阅读笔记汇编Linux内核完全注释Windows驱动开发计算机基础ARM11ARMv7-ASTM32IDESublimeLinux内核学习eMMCMMC子系统Ubuntu操作系统OfficeVMWareAPUEgccRTOS中断漫游世界随笔感悟开发工具软件应用编程VsCodearmccarmclang编译器ZephyrSPIJLink网卡驱动安装各种芯片库函数NFSμCOS内核sambaFlashUnix命令与脚本输入法Linux内核设计与实现gitRIFFWAVJATGFTPar8161安装centos有线上网μCGUI字库工程建立右键菜单网络文件系统Firefox百度NTFS文件系统CodeBlocksCentOS数据结构算法PhotoShop51KeilQTUltraEditscanfglibc宏定义UIDGID优先级娱乐天地SourceInsight磁盘扇区总线I2CPDFBComparePythonI2SFPUMakefileSWDCPUARP软件推荐FileZilla