mptunnel icon indicating copy to clipboard operation
mptunnel copied to clipboard

无法在Ubuntu上编译,但是可以在CentOS上编译

Open coconut49 opened this issue 9 years ago • 5 comments

Greensea 你好, 我在CentOS上,yum install libev-devel之后,编译仍然报错,后来把 /usr/include/libev的内容移动到/usr/include后编译成功。 可是ubuntu上apt-get install libev-dev后却编译报错,无法解决。 请问你有办法嘛? 无论如何都感谢你和你的项目。

coconut49 avatar Aug 30 '15 06:08 coconut49

请你把编译时的信息都贴上来,以便分析具体原因

greensea avatar Aug 31 '15 05:08 greensea

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 avatar Nov 21 '15 21:11 jamescorbett

@jamescorbett Seems your environment is misconfigured, make sure you have libev installed and GCC can find the dynamic libraries (libev.so)

greensea avatar Nov 23 '15 06:11 greensea

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.

jamescorbett avatar Nov 23 '15 10:11 jamescorbett

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.

greensea avatar Dec 01 '15 08:12 greensea