mptunnel
mptunnel copied to clipboard
无法在Ubuntu上编译,但是可以在CentOS上编译
Greensea 你好, 我在CentOS上,yum install libev-devel之后,编译仍然报错,后来把 /usr/include/libev的内容移动到/usr/include后编译成功。 可是ubuntu上apt-get install libev-dev后却编译报错,无法解决。 请问你有办法嘛? 无论如何都感谢你和你的项目。
请你把编译时的信息都贴上来,以便分析具体原因
I have the same problem, I'm unable to get it to compile under ubuntu. References to pthread and libev fail.
odroid@odroid:~/build/mptunnel$ make
gcc -MT "server.o server.d" -MM -g -Wall -I/usr/include/libev server.c > server.d
gcc -MT "rbtree.o rbtree.d" -MM -g -Wall -I/usr/include/libev rbtree.c > rbtree.d
gcc -MT "net.o net.d" -MM -g -Wall -I/usr/include/libev net.c > net.d
gcc -MT "mptunnel.o mptunnel.d" -MM -g -Wall -I/usr/include/libev mptunnel.c > mptunnel.d
gcc -MT "client.o client.d" -MM -g -Wall -I/usr/include/libev client.c > client.d
gcc -g -Wall -I/usr/include/libev -c -o client.o client.c
gcc -g -Wall -I/usr/include/libev -c -o net.o net.c
gcc -g -Wall -I/usr/include/libev -c -o mptunnel.o mptunnel.c
gcc -g -Wall -I/usr/include/libev -c -o rbtree.o rbtree.c
gcc -g -lev -lpthread client.o net.o mptunnel.o rbtree.o -o mpclient
client.o: In function `ev_thread':
/home/odroid/build/mptunnel/client.c:43: undefined reference to `ev_run'
client.o: In function `main':
/home/odroid/build/mptunnel/client.c:82: undefined reference to `pthread_create'
/home/odroid/build/mptunnel/client.c:83: undefined reference to `pthread_detach'
client.o: In function `init_recv_ev':
/home/odroid/build/mptunnel/client.c:215: undefined reference to `ev_loop_new'
/home/odroid/build/mptunnel/client.c:222: undefined reference to `ev_io_start'
client.o: In function `destroy_recv_ev':
/home/odroid/build/mptunnel/client.c:234: undefined reference to `ev_io_stop'
client.o: In function `client_thread':
/home/odroid/build/mptunnel/client.c:368: undefined reference to `pthread_create'
/home/odroid/build/mptunnel/client.c:369: undefined reference to `pthread_detach'
mptunnel.o: In function `received_init':
/home/odroid/build/mptunnel/mptunnel.c:114: undefined reference to `pthread_mutexattr_init'
/home/odroid/build/mptunnel/mptunnel.c:115: undefined reference to `pthread_mutexattr_settype'
/home/odroid/build/mptunnel/mptunnel.c:117: undefined reference to `pthread_mutexattr_destroy'
collect2: error: ld returned 1 exit status
make: *** [mpclient] Error 1
odroid@odroid:~/build/mptunnel$
Changed Makefile:
From
LDFLAGS = -g -lev -lpthread
to
LDFLAGS = -g -lev -pthread
Now:
odroid@odroid:~/build/mptunnel$ make
gcc -MT "server.o server.d" -MM -g -Wall -I/usr/include/libev server.c > server.d
gcc -MT "rbtree.o rbtree.d" -MM -g -Wall -I/usr/include/libev rbtree.c > rbtree.d
gcc -MT "net.o net.d" -MM -g -Wall -I/usr/include/libev net.c > net.d
gcc -MT "mptunnel.o mptunnel.d" -MM -g -Wall -I/usr/include/libev mptunnel.c > mptunnel.d
gcc -MT "client.o client.d" -MM -g -Wall -I/usr/include/libev client.c > client.d
gcc -g -Wall -I/usr/include/libev -c -o client.o client.c
gcc -g -Wall -I/usr/include/libev -c -o net.o net.c
gcc -g -Wall -I/usr/include/libev -c -o mptunnel.o mptunnel.c
gcc -g -Wall -I/usr/include/libev -c -o rbtree.o rbtree.c
gcc -g -lev -pthread client.o net.o mptunnel.o rbtree.o -o mpclient
client.o: In function `ev_thread':
/home/odroid/build/mptunnel/client.c:43: undefined reference to `ev_run'
client.o: In function `init_recv_ev':
/home/odroid/build/mptunnel/client.c:215: undefined reference to `ev_loop_new'
/home/odroid/build/mptunnel/client.c:222: undefined reference to `ev_io_start'
client.o: In function `destroy_recv_ev':
/home/odroid/build/mptunnel/client.c:234: undefined reference to `ev_io_stop'
collect2: error: ld returned 1 exit status
make: *** [mpclient] Error 1
odroid@odroid:~/build/mptunnel$
@jamescorbett Seems your environment is misconfigured, make sure you have libev installed and GCC can find the dynamic libraries (libev.so)
Oddly the linker does find libev.so successfully, I'm not in front of my computer but I ran it with verbose and saw it located.
Could you post verbose output of the compiler?
On Mon, Nov 23, 2015 at 6:12 PM, James Corbett [email protected] wrote:
Oddly the linker does find libev.so successfully, I'm not in front of my computer but I ran it with verbose and saw it located.
— Reply to this email directly or view it on GitHub https://github.com/greensea/mptunnel/issues/2#issuecomment-158895863.