[CMake] Solaris using gcc to link instead of g++

William A. Hoffman billlist at nycap.rr.com
Mon Aug 7 12:14:14 EDT 2006


The code is in Platforms/SunOS.cmake:


IF(CMAKE_COMPILER_IS_GNUCXX)
  IF(CMAKE_COMPILER_IS_GNUCC)
    SET(CMAKE_CXX_CREATE_SHARED_LIBRARY
        "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS>  <CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
  ELSE(CMAKE_COMPILER_IS_GNUCC)


If libstdc++ was automatically added, it would break the builds for many
solaris boxes.   Sun shipped a gcc compiler that did not have a shared
libstdc++, and the .a did not have -PIC compiled .o files, so if we used g++
or automatically added libstdc++ (same thing) it would break builds.  That said,
maybe things have changed.   Any the above stuff can be changed on a
per project basis.   

-Bill




At 11:56 AM 8/7/2006, Michael Bell wrote:
>Bill,
>
>So cmake detects solaris and decides to use gcc? If I use g++, it
>works for me now (with gcc 3.3.1). Should I file this as a bug?
>
>Using g++ would be the perferable result for me, but at the very
>least, libstdc++ should automatically be added at the linking step.
>When libstc++ is not linked, the resulting run-time error message was
>difficult to debug, to say the least.
>
>thanks,
>michael
>
>On 8/7/06, William A. Hoffman <billlist at nycap.rr.com> wrote:
>>I think that the problem was sun was shipping with a gcc that did not have
>>a shared stdc++, so if you created shared libraries with g++ they did not link.
>>
>>-Bill
>>
>>
>>At 10:36 AM 8/7/2006, Michael Bell wrote:
>>>Hi,
>>>
>>>When compiling ITK2.8 on Solaris 5.9 with gcc 3.3.1, files are being
>>>compiled correctly with g++, but libraries are being linked with gcc.
>>> From a random link.txt:
>>>gcc  -fPIC   -shared  -Wl,-hlibITKIO.so.2.8 -o ../../bin/libITKIO.so.2.8.0  ...
>>>
>>>This problem requires me to manually link stdc++.
>>>
>>>Compiling from the exact same codebase on linux works correctly. I
>>>compared the cmake configuration, and they are the same (different
>>>paths to the same programs), except linux uses gmake while solaris
>>>uses make.
>>>
>>>Why would solaris use gcc to link? What can I do about it?
>>>
>>>thanks,
>>>michael
>>>
>>>
>>>--
>>>michael.bell at acm.org
>>>_______________________________________________
>>>CMake mailing list
>>>CMake at cmake.org
>>>http://www.cmake.org/mailman/listinfo/cmake
>>
>
>
>-- 
>michael.bell at acm.org
>_______________________________________________
>CMake mailing list
>CMake at cmake.org
>http://www.cmake.org/mailman/listinfo/cmake



More information about the CMake mailing list