Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
6709 Discussions

libiomp5.so: undefined reference to 'pthread_atfork' compiling openssl on intel64/emt64

Nick_Lindberg
Beginner
999 Views
Hello,

I am attempting to compile openssl using the patch to allow the openssl functions to link against the special crypto functions in ipp (so that I can leverage the built in AES instructions on my Westmere chip.) I've been following the guide here:

http://software.intel.com/en-us/articles/boosting-openssl-aes-encryption-with-intel-ipp/

Everything is working great except that when I try to compile after patching openssl, at the step:

./build_ssl_ipp_sh. openssl-0.9.8j linuxemt64

I get the the following error:

ar: creating ../libssl.a
/opt/intel/Compiler/11.1/072/lib/intel64/libiomp5.so: undefined reference to `pthread_atfork'
collect2: ld returned 1 exit status
make[2]: *** [link_app.gnu] Error 1
make[1]: *** [openssl] Error 2
make: *** [build_apps] Error 1
/opt/intel/Compiler/11.1/072/lib/intel64/libiomp5.so: undefined reference to `pthread_atfork'
collect2: ld returned 1 exit status
make[2]: *** [link_app.gnu] Error 1
make[1]: *** [bntest] Error 2
make: *** [tests] Error 2

I've gone through the makefiles and tried changing -lpthread to -pthread, but that didn't solve the problem. Any help? I'm using the ipp that came with my Linux Intel Professional C++ Compiler Suite 11.1. Here is my $LD_LIBRARY_PATH:

/opt/intel/Compiler/11.1/072/lib/intel64:/opt/intel/Compiler/11.1/072/ipp/em64t/sharedlib:/opt/intel/Compiler/11.1/072/mkl/lib/em64t:/opt/intel/Compiler/11.1/072/tbb/intel64/cc4.1.0_libc2.4_kernel2.6.16.21/lib:/lib64

I've installed everything using the steps in the aforementioned link. Doing a search on this error, I see that others have run into the same problem-- though usually it is solved by adding -lpthread. What I'm wondering is if I have to add it anywhere else in the make process, but I can't figure out where because it's part of $LIBRARIES that seems to get pulled into everything for linking.

The closest I found to a solution is:

http://software.intel.com/en-us/articles/how-to-build-ipp-application-in-linux-environment/

but that didn't shed any light. I've confirmed that /lib64 indeed contains:

libpthread-2.9.so
libpthread.so.0

Do I need a newer version of libpthread?

Thanks, any help would be greatly appreciated.

NDL
0 Kudos
2 Replies
Ying_H_Intel
Employee
999 Views
Hi NDL,

The version of libpthreadshould benot problem. Mineare even lower than your's:
libpthread-2.5.so libpthread.so.0

Could you please go through the makefile to see if there are some place where -lpthreadis before -liomp5?

I mean
for example,it will getundefined reference to `pthread_atfork', if the command line is like

>g++ main.cpp -omain -ldl -lpthread -L/opt/intel/ipp/lib/intel64 -lipps -lippcore -L/opt/intel/composerxe-2011.1.036/compiler/lib/intel64 -liomp5

fix it by

>g++ main.cpp -omain -ldl -L/opt/intel/ipp/lib/intel64 -lipps -lippcore -L/opt/intel/composerxe-2011.1.036/compiler/lib/intel64 -liomp5 -lpthread

Best Regards,
Ying
0 Kudos
Nick_Lindberg
Beginner
999 Views
Ying,

Yes, I've checked for that-- I will go double check again!

Thanks for your response--
NDL
0 Kudos
Reply