On 11/09/2016 04:14 PM, Even Rouault
wrote:
It's very strange. It builds fine for me in the same build environment on Fedora 24, 19, 12, and 5 but not on 15. Looking at the relevant .o files, on Fedora 24 I get:and it builds fine. Both with gcc 4.6.0 that comes with the DVD, and 4.6.3 after the updates. So it would seem that it is one of the dependency that might cause the issue (which seems odd) [craig:/cw/src_3p/gdal-2.1.2/frmts/o] nm vrtfilters.o|grep RasterIOInternal U _ZN16VRTComplexSource16RasterIOInternalIfEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_ [craig:/cw/src_3p/gdal-2.1.2/frmts/o] nm vrtsources.o|grep RasterIOInternal 0000000000000000 W _ZN16VRTComplexSource16RasterIOInternalIdEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_ 0000000000000000 W _ZN16VRTComplexSource16RasterIOInternalIfEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_ 0000000000000000 u _ZZN16VRTComplexSource16RasterIOInternalIdEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_E10bHasWarned 0000000000000000 u _ZZN16VRTComplexSource16RasterIOInternalIfEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_E10bHasWarned But on the Fedora 15 machine with GCC 4.6.3, I get: [dev:/cw/src_3p/gdal-2.1.2/frmts/o] nm vrtfilters.o|grep RasterIOInternal U _ZN16VRTComplexSource16RasterIOInternalIfEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_ [dev:/cw/src_3p/gdal-2.1.2/frmts/o] nm vrtsources.o|grep RasterIOInternal 0000000000000000 u _ZZN16VRTComplexSource16RasterIOInternalIdEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_E10bHasWarned 0000000000000000 u _ZZN16VRTComplexSource16RasterIOInternalIfEE6CPLErriiiiPvii12GDALDataTypexxP20GDALRasterIOExtraArgS3_E10bHasWarned I really don't know how GCC handles C++ templates internally, but the problem machine is missing 'nm' entries of type 'W' (which apparently means "weak symbol") to bridge the gap between the "_ZN16" reference and the "_ZZN16" definition. I worked around the problem by making a float-type-only copy of the templated function VRTComplexSource::RasterIOInternal() and calling that instead inside "vrtfilters.cpp" and GCC 4.6.3 seems to be happy with that. |
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev