Has anyone ever encountered this problem?
在2021年4月6日星期二 UTC+8 下午9:20:48<JX Zhang> 写道:

>  ✘~/workspace/gowork/src/pthread $  go build .
> # pthread
> ccode.c:12:15: warning: incompatible integer to pointer conversion passing 
> 'pthread_t' (aka 'unsigned long') to parameter of type 'pthread_once_t *' 
> (aka 'int *') [-Wint-conversion]
> /usr/include/pthread.h:495:42: note: passing argument to parameter 
> '__once_control' here
> ccode.c:12:23: warning: null passed to a callee that requires a non-null 
> argument [-Wnonnull]
> # pthread
> ccode.c:11: error: undefined reference to 'pthread_join'
> ccode.c:12: error: undefined reference to 'pthread_once'
> /usr/lib/gcc/x86_64-linux-gnu/8/libgcc.a(generic-morestack-thread.o):function 
> __wrap_pthread_create: error: undefined reference to 'pthread_once'
>
> --------------------------------
> Make  the pthread_join and pthread_once as comments and recompile the file
> ```bash
> ~/workspace/gowork/src/pthread $ ldd main
> linux-vdso.so.1 (0x00007ffc58db4000)
> libgo.so.13git => /home/jxzhang/.local/gollvm/lib64/libgo.so.13git 
> (0x00007fc599db0000)
> libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc599a12000)
> libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc5997fa000)
> libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc599409000)
> /lib64/ld-linux-x86-64.so.2 (0x00007fc59b6cb000)
> libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
> (0x00007fc5991ea000)
>  ~/workspace/gowork/src/pthread $ nm 
> /home/jxzhang/.local/gollvm/lib64/libgo.so.13git | grep -E 
> "pthread_create|pthread_join|pthread_once"
>                  w pthread_create
>                  w pthread_once
> 0000000001089d70 t __wrap_pthread_create
>  ~/workspace/gowork/src/pthread $ nm /lib/x86_64-linux-gnu/libpthread.so.0 
> | grep -E "pthread_create|pthread_join|pthread_once"
> 000000000000f9b0 t __GI___pthread_once
> 00000000000079b0 t __pthread_create_2_1
> 00000000000079b0 T pthread_create@@GLIBC_2.2.5
> 0000000000008b50 t __pthread_join
> 0000000000008b50 W pthread_join
> 000000000000f9b0 T __pthread_once
> 000000000000f9b0 W pthread_once
> 000000000000f850 t __pthread_once_slow
> ```
>
>
> 在2021年4月6日星期二 UTC+8 下午9:15:25<JX Zhang> 写道:
>
>> I met some problem about pthread.
>> I wrote a cgo demo which use some pthread_* function, but it compile 
>> failed
>>
>> ccode.c
>> ```
>> # include <stdio.h>
>> # include "ccode.h"
>> # include <pthread.h>
>>
>> int try_pthread(){ 
>> pthread_t id;
>> int ret, i = 0;
>> ret = pthread_create(&id,NULL,(void *)thread,NULL);
>> for(i=0;i<=5;i++)
>> printf("This is main thread %d\n",i); 
>> pthread_join(id,NULL);
>> pthread_once(id, NULL);
>> return 0;
>> }
>>
>> void thread()
>> {
>> int i=0;
>> for(i=0;i<=5;i++)
>> printf("this is thread %d\n",i);
>> }
>> ```
>>
>> main.go
>> ```
>> package main
>>
>> /*
>> #cgo CFLAGS: -I./
>> #cgo LDFLAGS: -L./
>> #include "ccode.h"
>> */
>> import "C"
>>
>> func main() {
>> _ = C.try_pthread()
>> }
>> ```
>>
>> the `pthread_create` can be searched, but the other two functions report 
>> this:
>> ccode.c:11: error: undefined reference to 'pthread_join'
>> ccode.c:12: error: undefined reference to 'pthread_once'
>>
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/c541edcb-74a3-49a8-9a11-7090065e3fb1n%40googlegroups.com.

Reply via email to