#2649 closed defect (fixed)
cu_varint.o: undefined reference to symbol 'lround@@GLIBC_2.2.5'
Reported by: | strk | Owned by: | nicklas |
---|---|---|---|
Priority: | medium | Milestone: | PostGIS 2.2.0 |
Component: | build | Version: | master |
Keywords: | Cc: |
Description
As of r12201 I'm getting an error on "make check" under liblwgeom/cunit
Change History (13)
comment:1 by , 11 years ago
comment:2 by , 11 years ago
About Jenkins What address did you use? with http://debbie.postgis.net:8080/ I get in without password.
From what I see Jenkins don't have trouble with that commit. 4 hours ago all test passed. But now it gets stuck when loading raster sql http://debbie.postgis.net:8080/job/PostGIS_Regress/3305/console
But about the error you get, do you know what can cause it?
For me all builds and passes make check locally with latest trunk.
comment:3 by , 11 years ago
Owner: | changed from | to
---|
No idea where the error comes from, here's the full context:
make[2]: Entering directory `/usr/src/postgis/postgis/liblwgeom/cunit' gcc -g -O2 -Wall -Wmissing-prototypes -I/usr/local/include -I.. -c -o cu_varint.o cu_varint.c /bin/bash ../../libtool --mode=link gcc -g -O2 -Wall -Wmissing-prototypes -I/usr/local/include -o cu_tester cu_algorithm.o cu_buildarea.o cu_clean.o cu_print.o cu_misc.o cu_ptarray.o cu_geodetic.o cu_geos.o cu_tree.o cu_measures.o cu_node.o cu_libgeom.o cu_split.o cu_stringbuffer.o cu_triangulate.o cu_homogenize.o cu_force_sfs.o cu_out_wkt.o cu_out_wkb.o cu_out_gml.o cu_out_kml.o cu_out_geojson.o cu_out_svg.o cu_surface.o cu_out_x3d.o cu_in_geojson.o cu_in_wkb.o cu_in_wkt.o cu_varint.o cu_tester.o ../liblwgeom.la -lcunit libtool: link: gcc -g -O2 -Wall -Wmissing-prototypes -I/usr/local/include -o .libs/cu_tester cu_algorithm.o cu_buildarea.o cu_clean.o cu_print.o cu_misc.o cu_ptarray.o cu_geodetic.o cu_geos.o cu_tree.o cu_measures.o cu_node.o cu_libgeom.o cu_split.o cu_stringbuffer.o cu_triangulate.o cu_homogenize.o cu_force_sfs.o cu_out_wkt.o cu_out_wkb.o cu_out_gml.o cu_out_kml.o cu_out_geojson.o cu_out_svg.o cu_surface.o cu_out_x3d.o cu_in_geojson.o cu_in_wkb.o cu_in_wkt.o cu_varint.o cu_tester.o ../.libs/liblwgeom.so -lcunit /usr/bin/ld: cu_varint.o: undefined reference to symbol 'lround@@GLIBC_2.2.5' /lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status
If I remove cu_varint.o from the commanline (after rebuilding cu_tester.o to avoid its references) the build passes.
comment:4 by , 11 years ago
Component: | postgis → build/upgrade/install |
---|
comment:5 by , 11 years ago
Is it normal for the cu_varint.c file to include "lwout_twkb.c" ?
#include "lwout_twkb.c"
comment:7 by , 11 years ago
Sorry, obviously libm is already included, given the error comes from that file..
comment:8 by , 11 years ago
Yes the code that the test is testing is creating varInt https://developers.google.com/protocol-buffers/docs/encoding which is the way the integers is packed in the twkb-format.
But I can recall having some trouble with this round command. I think I was suspecting some conflicting round command in the postgres universe. Can it be that the postgres header should be included in the test to? or it is through "liblwgeom.h" isn't it?
Little strange that I or Jenkins don't get the same error.
comment:9 by , 11 years ago
A stackexchange post discussing reasons for those errors: http://stackoverflow.com/questions/9934549/very-strange-linker-behavior
comment:10 by , 11 years ago
The round command is not used for the part of "lwout_twkb.c" that is used in the cunit test.
comment:11 by , 11 years ago
r12249 fixed it for me. I wonder if it's a libtool version issue… I have 2.4.2 here
comment:12 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:13 by , 11 years ago
# libtool —version ltmain.sh (GNU libtool) 2.2.6b
But I also see that I probably should have used lround instead of round since I expect a long integer in return. Maybe that is what makes things go wrong.
It is two occasions in "lwout_twkb.c" where round is used. Maybe you could test by changing to lround?
I was also wrong earlier about that all tests passes locally. I get the same error as Jenkins. But it builds and all cunit tests passes
I suspect Jenkins is also unhappy, but can't tell as it asks me for a username/password http://debbie.postgis.net:8080/login?from=%2Fjob%2FPostGIS_2.2%2Fws%2F