当前位置:  技术问答>linux和unix

apue例子编译的问题

    来源: 互联网  发布时间:2017-05-23

    本文导语:  按照网上的方法编译出了libapue.a,但还是出现链接错误 $ gcc fig1.3.cpp  -lapue /tmp/ccswK9BA.o: In function `main': fig1.3.cpp:(.text+0x20): undefined reference to `err_quit(char const*, ...)' fig1.3.cpp:(.text+0x60): undefined reference to `err_sys(c...

按照网上的方法编译出了libapue.a,但还是出现链接错误
$ gcc fig1.3.cpp  -lapue
/tmp/ccswK9BA.o: In function `main':
fig1.3.cpp:(.text+0x20): undefined reference to `err_quit(char const*, ...)'
fig1.3.cpp:(.text+0x60): undefined reference to `err_sys(char const*, ...)'
collect2: error: ld returned 1 exit status

对libapue.a 使用 nm 查看结果,里面应该有这两个函数的哇,请问是什么原因导致链接错误的,怎么解决
error.o:
                 U abort
0000000000000413 t err_doit
0000000000000209 T err_dump
000000000000015a T err_exit
00000000000002b5 T err_msg
                 U __errno_location
0000000000000360 T err_quit
0000000000000000 T err_ret
00000000000000a9 T err_sys


|
因为你的文件后缀是cpp,gcc当作C++文件并自动调用g++去编译,由于C++ name mangle 机制,函数名被修改了。你可以用先把cpp文件编译成.o文件(用-c),再用nm看看就能发现函数名被修改了。具体可以google C++ mangle。

简单的解决方法就是把文件名从.cpp改成.c。

另一种方法就是用extern C防止mangle。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • apue.h的问题
  • apue中的一个问题
  • APUE中 system函数的实现中的问题
  • APUE中“信号”一节的问题
  • apue学习问题 第八章 进程控制 相关
  • 关于unix环境高级编程的apue的问题
  • apue中父子进程同步的问题。
  • <APUE>中的一个问题
  • 关于APUE信号自我阻塞的问题
  • 新看APUE,关于进程方面的问题,求大家指教...
  • 读unix 经典著作 apue 中文版本,这里翻译是否有问题 ,还是我理解有误?
  • 求助:apue文件在make的时候提示timex.h有问题,make失败
  • 关于apue.h头文件使用问题
  • 下载了APUE源码,怎么打不开啊?
  • 文件名为“apue.tar.Z”的文件在UNIX下怎么打开?大家帮帮忙
  • APUE第2版的例2-1的疑问
  • apue书上的概念,读过这本书的请进
  • 刚学完apue,大家给个建议
  • 求apue的课后答案~~~~~~~~~~~~~
  • APUE 看完之后,拿什么练练手?
  • APUE+macro
  • APUE相关章节不容易理解。
  • apue书的的信号函数,看不懂
  • 哪位兄弟在看apue?相互交流一下
  • apue 上的 Figure3.10运行后,输出怎么是空白
  • apue page113
  • 不同缓冲区长度读操作 APUE2e
  • APUE2 10.12小节中所给的Figure 10.14程序是不是错了?
  • APUE 第二版 程序 5-2
  • 问一下《APUE》这本书是否适合linux开发 ?
  • 关于apue上的一段代码


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3