[ITK] compiling itk on freebsd, how to flag out ldl?

Matt McCormick matt.mccormick at kitware.com
Tue Feb 14 16:48:05 EST 2017


Hi,

It is not likely that the errors are related to ITK_DYNAMIC_LOADING.

FreeBSD has a package for ITK, which gives its configuration:

https://www.freshports.org/science/InsightToolkit/
https://reviews.freebsd.org/diffusion/P/browse/head/science/InsightToolkit/Makefile

HTH,
Matt

On Tue, Feb 14, 2017 at 4:32 PM, Lowekamp, Bradley (NIH/NLM/LHC) [C]
<blowekamp at mail.nih.gov> wrote:
> Hi,
>
> Are we sure the first case was not close to mostly working? Did other
> wrapped language link OK? did SimpleITK tests link OK? If ITK tests are
> enable with ITK_DYNAMIC_LOADING:BOOL=0 do they compile and work? We need to
> know if ITK is OK before moving to SimpleITK.
>
> @Matt
> I am not very familiar with CMAKE_DL_LIBS either [1]. I know Matt added the
> ITK_DYNAMIC_LOADING CMake variable to ITK, so he may have insight into this
> problem too. My guess is that CMAKE_DL_LIBS variable is not entered into the
> cache but CMake provides a default value for platform. I expect you can
> overrride it with command line values.
>
> I hacked a patch to enable CMAKE_DL_LIBS to propgate down from the
> Superbuild [2]. If you checkout that path you should be able to do a
> supberbuild of -DCMAKE_DL_LIBS=“”. That may work, but I don’t know for sure.
>
> HTH,
> Brad
>
> [1] https://cmake.org/cmake/help/v3.0/variable/CMAKE_DL_LIBS.html
> [2] https://github.com/SimpleITK/SimpleITK/pull/104
>
>
> On Feb 14, 2017, at 3:53 PM, Longzhu Shen <lqshen10 at gmail.com> wrote:
>
> Hi Brad,
>
> Many thanks for the advice.
> I made an attempt to follow the first approach but it did not seem
> work. Here is what I did and the errors I got.
>
> -----------------------------------------------------
> $ cmake ../SuperBuild -DITK_DYNAMIC_LOADING:BOOL=0
>
>
> [ 80%] Building CXX object
> Wrapping/Python/CMakeFiles/SimpleITK_PYTHON.dir/sitkPyCommand.cxx.o
> [ 80%] Building CXX object
> Wrapping/Python/CMakeFiles/SimpleITK_PYTHON.dir/SimpleITKPYTHON_wrap.cxx.o
> [ 80%] Linking CXX executable bin/SimpleITKTclsh
> /usr/bin/ld: cannot find -ldl
> c++: error: linker command failed with exit code 1 (use -v to see
> invocation)
> --- Wrapping/Tcl/bin/SimpleITKTclsh ---
> *** [Wrapping/Tcl/bin/SimpleITKTclsh] Error code 1
> -----------------------------------------------------
>
> I planned to try the 2nd approach. However, I could not find the
> CMAKE_DL_LIBS easily. I checked the subfolder of Superbuild,
> and SimpleITK-build/ITK-build. I did not find it in
> Code/Common/src/CMakeLists.txt as well.
>
> The only place I found "CMAKE_DL_LIBS" is in the file
> CMake/sitkTargetLinkLibrariesWithDynamicLookup.cmake
>
> 279:        target_link_libraries(main \"${CMAKE_DL_LIBS}\")
>
> I was wondering I may get further directions to modify CMAKE_DL_LIBS
> variable. Many thanks.
>
> sincerely,
>
> Longzhu
>
>
> Lowekamp @ 2017-02-14 15:36 UTC:
>
> Hello Longzu,
>
> You are using freebsd, that is new and exciting. I have not used that OS for
> developing.
>
> There are two things in the ITK/SimpleITK build that are related to this.
>
> First, there is an option in ITK ( which I have not used ) call
> ITK_DYNAMIC_LOADING. If you pass -DITK_DYNAMIC_LOADING:BOOL=0 to cmake for
> the Superbuild, it should propagate to the ITK project and this feature will
> be remove. This may solve your problem.
>
> The second is CMake variable CMAKE_DL_LIBS. I believe it is the dl library
> that is causing the problem [1]. Setting it to an empty string may also
> remove it from the linking lines. Getting that to propagate to the ITK
> project will not happen automatically and would need to be done manually in
> the ITK build.
>
> HTH,
> Brad
>
> [1]
> https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Core/Common/src/CMakeLists.txt#L142
>
> ________________________________________
> From: Longzhu Shen [lqshen10 at gmail.com]
> Sent: Tuesday, February 14, 2017 9:11 AM
> To: community at itk.org
> Subject: [ITK] compiling itk on freebsd, how to flag out ldl?
>
> Hello,
>
> I'm trying to compile simpleitk on my freebsd system.
> The issue I encountered is ldl is not found.
> After some searching, I found libdl is not needed on freebsd. It is
> included in libc. Wondering how I can turn it off in the make file.
> I did not find  ldl in the Makefile under Simpleitk-build.
>
> I followed the instrutions from the link below.
>
> https://chsasank.github.io/sitk-docs/building/unix.html#obtaining-source-code
>
> Thanks.
>
> Longzhu
>
>
>
> --
> Longzhu Shen, Ph.D.
> Postdoc Research Associate
> School of Forestry and Environmental Studies
> Yale University
> 195 Prospect Street
> New Haven, CT 06511
>
>


More information about the Community mailing list