编译时奇怪的引用问题,undefined reference

时间:2022-07-17 05:34:57
最近想使用activemq做消息处理,在ubuntu12.04上做客户端 http://activemq.apache.org/openwire-c-client.html 。使用activemq项目自带的客户端openwire(c语言),下载源码后,分别编译了apache apr, openwire, activemq, 分别产生了 libapr-1.so, libopenwire.so, libactivemq.so,其中apr放在它自己的安装目录下,后两个在 /usr/lib下。

然后编译openwire提供的main.c,编译没问题,连接就出来了undefined reference to "xx"

main.c 在 http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/src/examples/main.c

编译命令是

gcc -W -Wall -lactivemq -lopenwire -lapr-1 -L/usr/local/apr/lib main.o -o testmq

出错信息(部分):
main.o: In function 'die':
main.c:(.text+0xf3):undefined reference to 'apr_initialize'
...
main.c:(.text+0x2c5):undefined reference to 'amqcs_send'
...

如果是amqcs.h或者ow.h里面的函数,都是undefined reference

另外,这些代码都是C,没有c++,ow.h 可以看
http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/src/libopenwire/ow.h

amqcs.h 在 http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/src/libactivemq/amqcs.h

谢谢回复!

11 个解决方案

#1


activemq问题还是蛮多的...

#2


用nm -D看so的导出

#3


引用 2 楼 ouyh12345 的回复:
用nm -D看so的导出

++

#4


引用 1 楼 pathuang68 的回复:
activemq问题还是蛮多的...


nm 和 objdump 都用了,显示是正常的,里面的函数都有

#5


引用 2 楼 ouyh12345 的回复:
用nm -D看so的导出


nm 和 objdump 都用了,显示是正常的,里面的函数都有

#6


按 chinaunix的方法,加了--start-group就可以连接过去了,谢谢各位!

#7


楼主,你好。
我最近也在弄这个activemq。有一个问题没有弄清楚。
两台主机(无论是windows还是linux的)我都可以用java实现通信。但是我不太清楚用c怎么实现的。例如我在windows主机上使用java客户端,安装activemq,而在另一台主机上我不安装activemq(两台主机通信一般也只需要一个activemq就够了),也不安装jdk(因为这台主机不打算使用java编写客户端),是否只需要安装支持mq的运行库就够了,自己来写c客户端呢?不知道这种想法是否正确?还请大神帮忙解答啊。

另外activemq官网上的那个openwire-c客户端代码“http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/”如何编译呢?在编译过程中需要jdk支持么?我是弄java的,c只是本科时学过,不太会怎么用。

#8


引用 7 楼 ziweige 的回复:
楼主,你好。
我最近也在弄这个activemq。有一个问题没有弄清楚。
两台主机(无论是windows还是linux的)我都可以用java实现通信。但是我不太清楚用c怎么实现的。例如我在windows主机上使用java客户端,安装activemq,而在另一台主机上我不安装activemq(两台主机通信一般也只需要一个activemq就够了),也不安装jdk(因为这台主机不打算使用java编写客户端),是否只需要安装支持mq的运行库就够了,自己来写c客户端呢?不知道这种想法是否正确?还请大神帮忙解答啊。

另外activemq官网上的那个openwire-c客户端代码“http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/”如何编译呢?在编译过程中需要jdk支持么?我是弄java的,c只是本科时学过,不太会怎么用。


不一定一定要有java环境,用别的语言只要遵守mq的协议就可以了。activemq还支持一些公开的协议,就是说可以在不是自己的协议的第三方协议中通信。

openwire-c 等开源也可以在windows编译,可能要cygwin等,这个要看一下编译的文档,熟悉gcc

#9


我在activemq的论坛上看到,目前用activemq openwire-c的人很少,大部分已经转向activemq-cpp了,不知道这个怎么编译啊?
网上给的“http://blog.sina.com.cn/s/blog_7f311ef50101cnii.html” 这个我按照这个编译出错,报告ConnectionStateTracker.cpp:61:error   not have any field named 'LinkedHashMap'。

万分感谢~

#10


楼主,你能把你的activemq c客户端的编译步骤发个我么?求教啊

#11


同求啊 编译时奇怪的引用问题,undefined reference

#1


activemq问题还是蛮多的...

#2


用nm -D看so的导出

#3


引用 2 楼 ouyh12345 的回复:
用nm -D看so的导出

++

#4


引用 1 楼 pathuang68 的回复:
activemq问题还是蛮多的...


nm 和 objdump 都用了,显示是正常的,里面的函数都有

#5


引用 2 楼 ouyh12345 的回复:
用nm -D看so的导出


nm 和 objdump 都用了,显示是正常的,里面的函数都有

#6


按 chinaunix的方法,加了--start-group就可以连接过去了,谢谢各位!

#7


楼主,你好。
我最近也在弄这个activemq。有一个问题没有弄清楚。
两台主机(无论是windows还是linux的)我都可以用java实现通信。但是我不太清楚用c怎么实现的。例如我在windows主机上使用java客户端,安装activemq,而在另一台主机上我不安装activemq(两台主机通信一般也只需要一个activemq就够了),也不安装jdk(因为这台主机不打算使用java编写客户端),是否只需要安装支持mq的运行库就够了,自己来写c客户端呢?不知道这种想法是否正确?还请大神帮忙解答啊。

另外activemq官网上的那个openwire-c客户端代码“http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/”如何编译呢?在编译过程中需要jdk支持么?我是弄java的,c只是本科时学过,不太会怎么用。

#8


引用 7 楼 ziweige 的回复:
楼主,你好。
我最近也在弄这个activemq。有一个问题没有弄清楚。
两台主机(无论是windows还是linux的)我都可以用java实现通信。但是我不太清楚用c怎么实现的。例如我在windows主机上使用java客户端,安装activemq,而在另一台主机上我不安装activemq(两台主机通信一般也只需要一个activemq就够了),也不安装jdk(因为这台主机不打算使用java编写客户端),是否只需要安装支持mq的运行库就够了,自己来写c客户端呢?不知道这种想法是否正确?还请大神帮忙解答啊。

另外activemq官网上的那个openwire-c客户端代码“http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/”如何编译呢?在编译过程中需要jdk支持么?我是弄java的,c只是本科时学过,不太会怎么用。


不一定一定要有java环境,用别的语言只要遵守mq的协议就可以了。activemq还支持一些公开的协议,就是说可以在不是自己的协议的第三方协议中通信。

openwire-c 等开源也可以在windows编译,可能要cygwin等,这个要看一下编译的文档,熟悉gcc

#9


我在activemq的论坛上看到,目前用activemq openwire-c的人很少,大部分已经转向activemq-cpp了,不知道这个怎么编译啊?
网上给的“http://blog.sina.com.cn/s/blog_7f311ef50101cnii.html” 这个我按照这个编译出错,报告ConnectionStateTracker.cpp:61:error   not have any field named 'LinkedHashMap'。

万分感谢~

#10


楼主,你能把你的activemq c客户端的编译步骤发个我么?求教啊

#11


同求啊 编译时奇怪的引用问题,undefined reference