Skip to Content.
Sympa Menu

charm - Re: [charm] Controlling the compiler used to build charm++ (repost)

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

Re: [charm] Controlling the compiler used to build charm++ (repost)


Chronological Thread 
  • From: Phil Miller <mille121 AT illinois.edu>
  • To: Marc F Paterno <paterno AT fnal.gov>
  • Cc: "charm AT cs.uiuc.edu" <charm AT cs.uiuc.edu>
  • Subject: Re: [charm] Controlling the compiler used to build charm++ (repost)
  • Date: Thu, 9 Feb 2017 16:20:26 -0600

Hi Marc,

(Yes, this is the correct list for this. Our apologies for not responding sooner)

What you describe doing sounds like it should work correctly. Could you send us the multicore-darwin-x86_64/tmp/config.log file? The top of that file should show the path and command lines used during compilation.

Phil

On Thu, Feb 9, 2017 at 4:10 PM, Marc F Paterno <paterno AT fnal.gov> wrote:
Hello,

[This is a repost of a query I sent on January 31. I have not received any replies yet. If this is off-topic for this list, I apologize, and would appreciate a suggestion of where I should redirect the query. Thanks!]

I am trying to use charm++ v6.7.1 on macOS Sierra, and trying to build it using a specific version of GCC.

The projects on which I am working require C++14, so I am using GCC 6.3.0 (for which C++14 is the default language standard). The environment which I establish has the correct version of GCC in the PATH, so that running 'g++' at the bash prompt find the right version of the compiler I also have DYLD_LIBRARY_PATH set to find the GCC libraries. I have SIP disabled on my machine, so that the setting of DYLD_LIBRARY_PATH is not lost in spawned subshells.

I understand how to make the Charm++ compiler driver charmc use the compiler I have specified, by using the -cc and -c++ flags in my Makefile. I can verify that the resulting executable was actually built using my version of GCC. For example, using 'otool -L', I can see that my executable depends on libstdc++.6.dylib from the right directory for my GCC version, and not upon libc++.1.dylib, which is what clang uses by default.

I have built charm++ using the command
$> ./build charm++ multicore-darwin-x86_64 --with-production -j8 \
   --build-shared gcc

When I look at the dynamic libraries in the directorycharm-6.7.1/multicore-darwin-x86_64-gcc/lib_so/, 'otool -L' tells me that they depend upon  /usr/lib/libc++.1.dylib, leading me to believe they were compiled not by the GCC I want to use, but by clang.

I believe this will eventually cause me trouble, because the C++ standard library with which charm++ itself was compiled is not binary compatible with the libraries I am building which GCC.

Can anyone point me to instructions on how to build charm++ using a GCC that I specify, on macOS Sierra?

thanks
Marc




Archive powered by MHonArc 2.6.19.

Top of Page