【发布时间】:2013-08-14 22:46:50
【问题描述】:
我使用以下命令编译了一个 .cc 文件,该命令位于 Makefile 代码中:
bin/bash ../libtool --silent --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I.
-I.. -I../include/ -I.. -g -O2 -MT rtpsession_inet.lo -MD -MP -MF
.deps/rtpsession_inet.Tpo -c -o rtpsession_inet.lo rtpsession_inet.cc
.cc 文件中有一个名为 rtp_session_rtp_recv 的函数。但是据说使用Makefile生成的库时找不到这个函数的引用。
于是我查看了rtpsession_inet.cc生成的.o文件,发现并没有一个名为rtp_session_rtp_recv的函数,而函数名改为_Z20rtp_session_rtp_recvP11_RtpSessionj。 p>
同时,还有其他几个函数更改了它们的名称,例如rtp_session_rtp_send -> _Z20rtp_session_rtp_sendP11_RtpSessionP4msgb。
但是rtp_session_set_remote_addr_full等函数根本没有改变。
附加字符的含义是什么?我该如何处理这个问题?
我在Linux中编译文件并使用命令
nm rtpsession_inet.o
读取 .o 文件。 (包括名字不正确的所有函数都带有T标签,表示存在引用)
谢谢!
【问题讨论】:
-
但它不起作用.......似乎名称修饰是一种正常的机制。我不确定名称的不同是否会产生影响。
标签: linux function compiler-construction makefile g++