[Openmp-dev] Distributing program with OpenMP

Jonas Hahnfeld via Openmp-dev openmp-dev at lists.llvm.org
Tue Dec 19 02:38:52 PST 2017


Hi Bob,

static linking of the OpenMP runtime is in general discouraged because 
it produces all sort of nasty problems if there is still any shared 
library that also uses OpenMP. I think this is also why no static 
library is built by default but you can build only the OpenMP runtime 
yourself and enable an option for that (-DLIBOMP_ENABLE_SHARED=OFF). 
Then you might try passing -static to clang or some similar options.
Another possibility would be to bundle the shared library and set an 
rpath for the current (relative) directory. I think this might be 
possible but I can't verify at the moment.

Let us know if any of this worked,
Jonas

Am 2017-12-18 18:19, schrieb Rob McDonald via Openmp-dev:
> I'd like to distribute my program that uses OpenMP built with CLang
> 5.0.  I use CLang/LLVM as provided by MacPorts.
> 
> I need to distribute my program to users who won't have MacPorts or a
> compiler installed.
> 
> Unsurprisingly, output of otool shows that my program needs 
> libomp.dylib:
> 
> otool -L myprogram
> myprogram:
> /opt/local/lib/libomp/libomp.dylib (compatibility version 5.0.0,
> current version 5.0.0)
> /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 
> 120.1.0)
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
> version 1226.10.1)
> 
> Previously, I had compiled my program using gcc and was able to link
> OpenMP statically
> 
> otool -L myprogram
> myprogram:
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
> version 159.1.0)
> 
> By doing something like this:
> 
> if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
>   set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
> endif()
> 
> Is there a way to do this with CLang?
> 
> If not, what is the preferred way to bundle the required OpenMP 
> library?
> 
> I build from a CMake environment, so on Windows, I already do this:
> INCLUDE( InstallRequiredSystemLibraries )
> to grab all the required OpenMP libraries and whatnot.
> 
> My program is distributed as a dumb *.zip file -- nothing that gets
> installed to the system.  Will this still work in this paradigm, or
> will I need to get permission and install this library?
> 
> Rob
> _______________________________________________
> Openmp-dev mailing list
> Openmp-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev


More information about the Openmp-dev mailing list