【 使用环境 】生产环境 or 测试环境:虚拟机Vmware下的Ubuntu 22.04
【 OB or 其他组件 】
【 使用版本 】4.1.0
【问题描述】按照官方github编译release版本,在最后完成96%的时候报错:
ld.lld: error: undefined symbol: pthread_mutexattr_setrobust_np
referenced by proc_mutex.c
proc_mutex.o:(proc_mutex_pthread_create) in archive …/…/…/deps/3rd/usr/local/oceanbase/deps/devel/lib/libapr-1.a
did you mean: pthread_mutexattr_setrobust_np@GLIBC_2.4
defined in: /lib/x86_64-linux-gnu/libc.so.6
ld.lld: error: undefined symbol: pthread_mutex_consistent_np
referenced by proc_mutex.c
proc_mutex.o:(proc_mutex_pthread_acquire) in archive …/…/…/deps/3rd/usr/local/oceanbase/deps/devel/lib/libapr-1.a
referenced by proc_mutex.c
proc_mutex.o:(proc_mutex_pthread_tryacquire) in archive …/…/…/deps/3rd/usr/local/oceanbase/deps/devel/lib/libapr-1.a
did you mean: pthread_mutex_consistent_np@GLIBC_2.4
defined in: /lib/x86_64-linux-gnu/libc.so.6
ld.lld: error: undefined symbol: sys_siglist
referenced by signals.c
signals.o:(apr_signal_description_get) in archive …/…/…/deps/3rd/usr/local/oceanbase/deps/devel/lib/libapr-1.a
ld.lld: error: undefined symbol: pthread_yield
referenced by thread.c
thread.o:(apr_thread_yield) in archive …/…/…/deps/3rd/usr/local/oceanbase/deps/devel/lib/libapr-1.a
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/observer/CMakeFiles/observer.dir/build.make:161:src/observer/observer] 错误 1
make[1]: *** [CMakeFiles/Makefile2:10330:src/observer/CMakeFiles/observer.dir/all] 错误 2
make: *** [Makefile:166:all] 错误 2
查了一下好像是pthread相关的问题,这里编译似乎需要直接引用/usr/lib/libpthread.so这个文件,但我的pthread相关库安装是/usr/lib/x86_64-linux-gnu/libpthread.so.0,不在上一级目录下,而且无法重新apt安装这个库,会显示已安装,不知道如何解决
以及还报了一个其他地方的错误,不知道是不是这个相关的
【复现路径】按照官方文档的指令“https://github.com/oceanbase/oceanbase/wiki/Compile_CN”
先安装相关依赖:
sudo apt-get install git wget rpm rpm2cpio cpio make build-essential binutils m4
编译release版本:
bash build.sh release --init --make
【问题现象及影响】
采用了符号链接在/usr/lib下创建了指向我的库的libpthread.so,但还是无法解决,后面的单元测试也尝试执行,报错仍然是关于pthread,请各位大佬帮帮忙!
【附件】