Re: [libuv] Error undefined reference to ...

2,218 views
Skip to first unread message

Ben Noordhuis

unread,
May 23, 2013, 9:49:36 AM5/23/13
to li...@googlegroups.com
On Thu, May 23, 2013 at 3:24 PM, vpan <v.pan...@gmail.com> wrote:
> Hi All,
>
> I am new to libuv and I find that it is a very interesting library. I tried
> to follow the libuv book to get to know libuv further, however, I get error
> when I compiled my project. Is there someone that can give me suggestion how
> to deal with this error:
>
> Here is how I compile my project and the error produced:
> * gcc -Wall -g -o xlibuv1 libuv1.c
> -I/home/vpan/workspace/learn/libuv/include
> -L/home/vpan/workspace/learn/libuv -luv
> /home/vpan/workspace/learn/libuv/libuv.a(signal.o): In function
> `uv__signal_global_once_init':
> /home/vpan/workspace/learn/libuv/src/unix/signal.c:67: undefined reference
> to `pthread_once'
> /home/vpan/workspace/learn/libuv/libuv.a(signal.o): In function
> `uv__signal_block_and_lock':
> /home/vpan/workspace/learn/libuv/src/unix/signal.c:102: undefined reference
> to `pthread_sigmask'
> /home/vpan/workspace/learn/libuv/libuv.a(signal.o): In function
> `uv__signal_unlock_and_unblock':
> /home/vpan/workspace/learn/libuv/src/unix/signal.c:114: undefined reference
> to `pthread_sigmask'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_thread_join':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:37: undefined reference
> to `pthread_join'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_mutex_init':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:54: undefined reference
> to `pthread_mutexattr_init'
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:57: undefined reference
> to `pthread_mutexattr_settype'
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:62: undefined reference
> to `pthread_mutexattr_destroy'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_mutex_trylock':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:85: undefined reference
> to `pthread_mutex_trylock'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_rwlock_init':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:104: undefined reference
> to `pthread_rwlock_init'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_rwlock_destroy':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:112: undefined reference
> to `pthread_rwlock_destroy'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_rwlock_rdlock':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:118: undefined reference
> to `pthread_rwlock_rdlock'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_rwlock_tryrdlock':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:126: undefined reference
> to `pthread_rwlock_tryrdlock'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_rwlock_rdunlock':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:139: undefined reference
> to `pthread_rwlock_unlock'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_rwlock_wrlock':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:145: undefined reference
> to `pthread_rwlock_wrlock'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_rwlock_trywrlock':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:153: undefined reference
> to `pthread_rwlock_trywrlock'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_rwlock_wrunlock':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:166: undefined reference
> to `pthread_rwlock_unlock'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function `uv_once':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:172: undefined reference
> to `pthread_once'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_sem_init':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:225: undefined reference
> to `sem_init'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_sem_destroy':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:230: undefined reference
> to `sem_destroy'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_sem_post':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:236: undefined reference
> to `sem_post'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_sem_wait':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:245: undefined reference
> to `sem_wait'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_sem_trywait':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:257: undefined reference
> to `sem_trywait'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_cond_init':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:286: undefined reference
> to `pthread_condattr_setclock'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_barrier_init':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:412: undefined reference
> to `pthread_barrier_init'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_barrier_destroy':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:420: undefined reference
> to `pthread_barrier_destroy'
> /home/vpan/workspace/learn/libuv/libuv.a(thread.o): In function
> `uv_barrier_wait':
> /home/vpan/workspace/learn/libuv/src/unix/thread.c:426: undefined reference
> to `pthread_barrier_wait'
> /home/vpan/workspace/learn/libuv/libuv.a(uv-common.o): In function
> `uv_thread_create':
> /home/vpan/workspace/learn/libuv/src/uv-common.c:344: undefined reference to
> `pthread_create'
> /home/vpan/workspace/learn/libuv/libuv.a(linux-core.o): In function
> `uv__hrtime':
> /home/vpan/workspace/learn/libuv/src/unix/linux-core.c:244: undefined
> reference to `clock_gettime'
> /home/vpan/workspace/learn/libuv/libuv.a(linux-core.o): In function
> `uv_uptime':
> /home/vpan/workspace/learn/libuv/src/unix/linux-core.c:353: undefined
> reference to `clock_gettime'
> /home/vpan/workspace/learn/libuv/src/unix/linux-core.c:355: undefined
> reference to `clock_gettime'
> collect2: error: ld returned 1 exit status
> make: *** [exp_libuv] Error 1
>
> Some information about my machine:
> * OS: Linux Mint 14
> * gcc version
> $ gcc -v
> Using built-in specs.
> COLLECT_GCC=gcc
> COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
> Target: x86_64-linux-gnu
> Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
> 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs
> --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr
> --program-suffix=-4.7 --enable-shared --enable-linker-build-id
> --with-system-zlib --libexecdir=/usr/lib --without-included-gettext
> --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7
> --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
> --enable-libstdcxx-debug --enable-libstdcxx-time=yes
> --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror
> --with-arch-32=i686 --with-tune=generic --enable-checking=release
> --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
> Thread model: posix
> gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1)
>
> Thank you in advanced.
>
> Regards,

Link with `-luv -ldl -lrt -pthread` (in that order or it'll break when
-W,--as-needed is in effect.)

The gyp build takes care of that for you. I'll probably add a
Makefile fragment someday that exports UV_CFLAGS and UV_LDFLAGS
variables so you don't have to clutter your Makefile with
platform/arch checks.

vpan

unread,
May 23, 2013, 10:11:04 AM5/23/13
to li...@googlegroups.com
Hi Ben Noordhuis,

It is compiled .. :D.

Thanks a lot.

Regards,

hesham safi

unread,
Sep 26, 2013, 9:10:16 AM9/26/13
to li...@googlegroups.com
this solved everything. thanks :)


On Thursday, May 23, 2013 3:49:36 PM UTC+2, Ben Noordhuis wrote:

Dave Muhau

unread,
Jun 21, 2014, 10:34:24 PM6/21/14
to li...@googlegroups.com
Thanks Man!!!

It compiles!!

Cheers!


Reply all
Reply to author
Forward
0 new messages