RenderKit / openvkl

Intel(R) Open Volume Kernel Library
Apache License 2.0
200 stars 26 forks source link

unresolvable R_X86_64_TOFF32 #9

Closed mboisson closed 4 years ago

mboisson commented 4 years ago

I now get a new error, when building the examples :

[ 53%] Linking CXX executable ../../vklExamples
cd /tmp/ebuser/avx2/OpenVKL/0.10.0/iccifort-2020.1.217/easybuild_obj/examples/interactive && /cvmfs/soft.computecanada.ca/gentoo/2020/usr/bin/cmake -E cmake_link_script CMakeFiles/vklExamples.dir/link.txt --verbose=1
/tmp/eb-gm8eeave/tmpgggvr06h/icpc  -O2 -march=core-avx2 -axCore-AVX512 -ftz -fp-speculation=safe -fp-model source -no-ansi-alias -O3 -DNDEBUG  -L/cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Core/blosc/1.17.1/lib -L/cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Core/openexr/2.5.2/lib64 -L/cvmfs/soft.computecanada.ca/easybuild/software/    2020/avx2/Compiler/intel2020/openvdb/7.0.0/lib64 -L/cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Compiler/intel2020/openvdb/7.0.0/lib -L/cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Core/rkcommon/1.4.2/lib -L/cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Compiler/intel2020/boost/1.72.0/lib -L/cvmfs/soft.computecanada.ca/       easybuild/software/2020/avx2/Compiler/intel2020/embree/3.11.0/lib64 -L/cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Core/glfw/3.3.2/lib64 -L/cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Core/tbb/2020.2/lib -L/cvmfs/restricted.computecanada.ca/easybuild/software/2020/Core/intel/2020.1.217/lib/intel64 -rdynamic CMakeFiles/vklExamples.dir/  window/ArcballCamera.cpp.o CMakeFiles/vklExamples.dir/window/VKLWindow.cpp.o CMakeFiles/vklExamples.dir/AppInit.cpp.o CMakeFiles/vklExamples.dir/vklExamples.cpp.o CMakeFiles/vklExamples.dir/imgui/imgui.cpp.o CMakeFiles/vklExamples.dir/imgui/imgui_draw.cpp.o CMakeFiles/vklExamples.dir/imgui/imgui_demo.cpp.o CMakeFiles/vklExamples.dir/window/GLFWVKLWindow.cpp.o   CMakeFiles/vklExamples.dir/window/imgui_impl_glfw_gl3.cpp.o CMakeFiles/vklExamples.dir/window/TransferFunctionWidget.cpp.o  -o ../../vklExamples  -Wl,-rpath,/tmp/ebuser/avx2/OpenVKL/0.10.0/iccifort-2020.1.217/easybuild_obj: /cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Core/glfw/3.3.2/lib64/libglfw.so.3.3 ../../libvkl_example_renderers.a -lGL -lGLU /cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Compiler/intel2020/openvdb/7.0.0/lib/libopenvdb.so /cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Compiler/intel2020/boost/1.72.0/lib/libboost_iostreams-mt.so /cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Compiler/intel2020/boost/1.72.0/lib/libboost_regex-mt.so /cvmfs/soft.          computecanada.ca/easybuild/software/2020/avx2/Compiler/intel2020/boost/1.72.0/lib/libboost_system-mt.so /cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Core/openexr/2.5.2/lib64/libHalf.so ../../libopenvkl.so.0.10.0 /cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Core/rkcommon/1.4.2/lib/librkcommon.so.1.4.2 -pthread -ltbb -ltbbmalloc -ldl
/cvmfs/soft.computecanada.ca/gentoo/2020/usr/x86_64-pc-linux-gnu/binutils-bin/2.33.1/ld: CMakeFiles/vklExamples.dir/vklExamples.cpp.o(.text+0x108a5): unresolvable R_X86_64_TPOFF32 relocation against symbol `_ZSt15__once_callable@@GLIBCXX_3.4.11'
/cvmfs/soft.computecanada.ca/gentoo/2020/usr/x86_64-pc-linux-gnu/binutils-bin/2.33.1/ld: final link failed: nonrepresentable section on output
make[2]: *** [examples/interactive/CMakeFiles/vklExamples.dir/build.make:235: vklExamples] Error 1
make[2]: Leaving directory '/tmp/ebuser/avx2/OpenVKL/0.10.0/iccifort-2020.1.217/easybuild_obj'
make[1]: *** [CMakeFiles/Makefile2:1271: examples/interactive/CMakeFiles/vklExamples.dir/all] Error 2

This sounds like there is a missing -fPIC somewhere ?

mboisson commented 4 years ago

Note that this only happens if I'm building with the Intel 2020.1.217 compiler. It builds fine with GCC 9.3.0.

mboisson commented 4 years ago

This is solved if I add -DCMAKE_POSITION_INDEPENDENT_CODE=ON to the cmake arguments. Any reason why that would not be on by default ?

gregjohnson commented 4 years ago

Thanks for reporting this.

We actually do have that flag enabled by default in the root CMakeLists.txt, which should apply to all targets we build:

set(CMAKE_POSITION_INDEPENDENT_CODE ON)

Can you share which CMake version you're using? I'll try to reproduce this locally.

mboisson commented 4 years ago

I am not sure what happened in this failed build, but it now builds fine, so I can not reproduce. I will close this.