编译时奇怪的引用问题,undefined reference
最近想使用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
谢谢回复!