Bug 1169501
| Summary: | Missing symbol in libboost_mpi | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 6 | Reporter: | Martyn Gigg <martyn.gigg> | ||||
| Component: | boost | Assignee: | Jonathan Wakely <jwakely> | ||||
| Status: | CLOSED ERRATA | QA Contact: | Miloš Prchlík <mprchlik> | ||||
| Severity: | medium | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | 6.6 | CC: | dkochuka, jherrman, martyn.gigg, mcermak, mnewsome, mprchlik, pbhoot, stuart | ||||
| Target Milestone: | rc | ||||||
| Target Release: | --- | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||
| Doc Text: |
When compiling a C++ program using the Boost.MPI library, the compiling process previously failed to find the "boost::mpi::environment::environment(bool)" symbol and terminated with an "undefined reference" error. This update adds the missing symbol, and the described compiling process now successfully creates an executable.
|
Story Points: | --- | ||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2015-07-22 06:00:07 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Attachments: |
|
||||||
Created attachment 979730 [details]
A fix
I think this should fix the problem. I don't quite understand how the object got compiled in the first place, as you should have hit compilation error already. But that, too, should go away with this patch.
Oh, or are you possibly compiling against compat-openmpi or some such? Then boost would see MPI_VERSION of 2 and expose the symbol. But the DSO's were still built against an openmpi with MPI_VERSION 3, hence the symbol wasn't included in the DSO. Apologies, I didn't notice you mention compat-openmpi explicitly. No further questions then. Verified for build boost-1.41.0-27.el6. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2015-1269.html |
Description of problem: Compiling a C++ program using boost::mpi fails to find the symbol "boost::mpi::environment::environment(bool)" when linking Version-Release number of selected component (if applicable): 1.41.0-25 How reproducible: Always Steps to Reproduce: 1. Put the following into a file called stat_env.cpp #include <boost/mpi/environment.hpp> int main() { using boost::mpi::environment; environment env(true); } 2. Load the compat-mpi module with module load compat-openmpi-x86_64 3. Compile with g++ -I$MPI_INCLUDE -L/usr/lib64/openmpi/lib -lboost_mpi -o start_env start_env.cpp Actual results: /tmp/ccQU3mJK.o: In function `main': start_env.cpp:(.text+0x15): undefined reference to `boost::mpi::environment::environment(bool)' collect2: ld returned 1 exit status Expected results: An executable and no errors