Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing -lpthread flag #2861

Closed
pnorman opened this issue May 24, 2015 · 4 comments
Closed

Missing -lpthread flag #2861

pnorman opened this issue May 24, 2015 · 4 comments

Comments

@pnorman
Copy link
Contributor

pnorman commented May 24, 2015

Configured with ./configure CXX=clang++ CC=clang HB_INCLUDES=/usr/local/include HB_LIBS=/usr/local/lib

clang++ -o test/visual/run test/visual/report.o test/visual/runner.o test/visual/run.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -L/usr/local/lib -L/usr/lib -lmapnik -lmapnik-wkt -lmapnik-json -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -lproj -ltiff -lwebp -lxml2 -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -lboost_program_options
/usr/bin/ld: //lib/libthr.so.3: invalid DSO for symbol `pthread_create@@FBSD_1.0' definition
//lib/libthr.so.3: could not read symbols: Bad value
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
scons: *** [test/visual/run] Error 1
scons: building terminated because of errors.

Adding -lpthread to the clang++ command causes it to report success.

@pnorman
Copy link
Contributor Author

pnorman commented May 24, 2015

I did check and SConstruct:1222-1225 is correctly identifying the platform as FreeBSD

    if env['PLATFORM'] == 'FreeBSD':
        thread_suffix = ''
        env.Append(LIBS = 'pthread')

@pnorman
Copy link
Contributor Author

pnorman commented May 24, 2015

I changed the line above to add nvpair to LIBS, an unrelated but valid library. Debugging statements showed that it was part of env[LIBS], then the commands issued showed -lpthread showing up, probably from another dependency needing it, but no -lnvpair. It's as if the first item in env['LIBS'] were being ignored.

@springmeyer
Copy link
Member

@pnorman can you test this patch:

diff --git a/src/build.py b/src/build.py
index 8e86db7..a7a812b 100644
--- a/src/build.py
+++ b/src/build.py
@@ -113,6 +113,9 @@ if env['RUNTIME_LINK'] != 'static':

 lib_env['LIBS'].append('z')

+if env['PLATFORM'] == 'FreeBSD':
+    lib_env['LIBS'].append('pthread')
+
 if env['PLATFORM'] == 'Darwin':
     mapnik_libname = env.subst(env['MAPNIK_LIB_NAME'])
     if env['FULL_LIB_PATH']:

@pnorman
Copy link
Contributor Author

pnorman commented May 24, 2015

I get a new error

scons: Building targets ...
c++ -o src/libmapnik.so -Wl,-rpath-link,. -Wl,-soname,libmapnik.so.3.0 -Wl,-rpath=/home/pnorman/mapnik/lib -shared src/expression_grammar.os src/fs.os src/request.os src/well_known_srs.os src/params.os src/image_filter_types.os src/miniz_png.os src/color.os src/conversions.os src/image_copy.os src/image_compositing.os src/image_scaling.os src/box2d.os src/datasource_cache.os src/datasource_cache_static.os src/debug.os src/geometry_reprojection.os src/expression_node.os src/expression_string.os src/expression.os src/transform_expression.os src/feature_kv_iterator.os src/feature_style_processor.os src/feature_type_style.os src/dasharray_parser.os src/font_engine_freetype.os src/font_set.os src/function_call.os src/gradient.os src/parse_path.os src/image_reader.os src/cairo_io.os src/image.os src/image_view.os src/image_view_any.os src/image_any.os src/image_options.os src/image_util.os src/image_util_jpeg.os src/image_util_png.os src/image_util_tiff.os src/image_util_webp.os src/layer.os src/map.os src/load_map.os src/memory.os src/palette.os src/marker_helpers.os src/transform_expression_grammar.os src/geometry_envelope.os src/plugin.os src/rule.os src/save_map.os src/wkb.os src/projection.os src/proj_transform.os src/scale_denominator.os src/simplify.os src/parse_transform.os src/memory_datasource.os src/symbolizer.os src/symbolizer_keys.os src/symbolizer_enumerations.os src/unicode.os src/raster_colorizer.os src/mapped_memory_cache.os src/marker_cache.os src/svg/svg_parser.os src/svg/svg_path_parser.os src/svg/svg_points_parser.os src/svg/svg_transform_parser.os src/warp.os src/css_color_grammar.os src/vertex_cache.os src/text/font_library.os src/text/text_layout.os src/text/text_line.os src/text/itemizer.os src/text/scrptrun.os src/text/face.os src/text/glyph_positions.os src/text/placement_finder.os src/text/properties_util.os src/text/renderer.os src/text/symbolizer_helpers.os src/text/text_properties.os src/text/font_feature_settings.os src/text/formatting/base.os src/text/formatting/list.os src/text/formatting/text.os src/text/formatting/format.os src/text/formatting/layout.os src/text/formatting/registry.os src/text/placements/registry.os src/text/placements/base.os src/text/placements/dummy.os src/text/placements/list.os src/text/placements/simple.os src/group/group_layout_manager.os src/group/group_rule.os src/group/group_symbolizer_helper.os src/xml_tree.os src/config_error.os src/color_factory.os src/renderer_common.os src/renderer_common/render_pattern.os src/renderer_common/process_group_symbolizer.os src/math.os src/cairo/process_markers_symbolizer.os src/cairo/process_group_symbolizer.os src/cairo/cairo_context.os src/cairo/cairo_renderer.os src/cairo/cairo_render_vector.os src/cairo/process_text_symbolizer.os src/cairo/process_line_symbolizer.os src/cairo/process_line_pattern_symbolizer.os src/cairo/process_polygon_symbolizer.os src/cairo/process_polygon_pattern_symbolizer.os src/cairo/process_debug_symbolizer.os src/cairo/process_point_symbolizer.os src/cairo/process_raster_symbolizer.os src/cairo/process_building_symbolizer.os src/png_reader.os src/tiff_reader.os src/webp_reader.os src/jpeg_reader.os src/agg/agg_renderer.os src/agg/process_dot_symbolizer.os src/agg/process_building_symbolizer.os src/agg/process_line_symbolizer.os src/agg/process_line_pattern_symbolizer.os src/agg/process_text_symbolizer.os src/agg/process_point_symbolizer.os src/agg/process_polygon_symbolizer.os src/agg/process_polygon_pattern_symbolizer.os src/agg/process_raster_symbolizer.os src/agg/process_shield_symbolizer.os src/agg/process_markers_symbolizer.os src/agg/process_group_symbolizer.os src/agg/process_debug_symbolizer.os deps/clipper/src/clipper.os src/grid/process_markers_symbolizer.os src/grid/process_group_symbolizer.os src/grid/grid.os src/grid/grid_renderer.os src/grid/process_building_symbolizer.os src/grid/process_line_pattern_symbolizer.os src/grid/process_line_symbolizer.os src/grid/process_point_symbolizer.os src/grid/process_polygon_pattern_symbolizer.os src/grid/process_polygon_symbolizer.os src/grid/process_raster_symbolizer.os src/grid/process_shield_symbolizer.os src/grid/process_text_symbolizer.os src/libxml2_loader.os -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -L/usr/local/lib -L/usr/lib -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -lproj -ltiff -lwebp -lxml2 -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -lpthread
/usr/bin/ld: deps/agg/libagg.a(agg_vcgen_dash.o): relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC
deps/agg/libagg.a: could not read symbols: Bad value
c++: error: linker command failed with exit code 1 (use -v to see invocation)
scons: *** [src/libmapnik.so] Error 1
scons: building terminated because of errors.
Makefile:39: recipe for target 'mapnik' failed
gmake: *** [mapnik] Error 2

Taking the long c++ command line and adding -v I get

FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
Target: x86_64-unknown-freebsd10.1
Thread model: posix
Selected GCC installation:
 "/usr/bin/ld" --eh-frame-hdr -Bshareable --hash-style=both --enable-new-dtags -o src/libmapnik.so /usr/lib/crti.o /usr/lib/crtbeginS.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -L/usr/local/lib -L/usr/lib -L/usr/lib -rpath-link . -soname libmapnik.so.3.0 -rpath=/home/pnorman/mapnik/lib src/expression_grammar.os src/fs.os src/request.os src/well_known_srs.os src/params.os src/image_filter_types.os src/miniz_png.os src/color.os src/conversions.os src/image_copy.os src/image_compositing.os src/image_scaling.os src/box2d.os src/datasource_cache.os src/datasource_cache_static.os src/debug.os src/geometry_reprojection.os src/expression_node.os src/expression_string.os src/expression.os src/transform_expression.os src/feature_kv_iterator.os src/feature_style_processor.os src/feature_type_style.os src/dasharray_parser.os src/font_engine_freetype.os src/font_set.os src/function_call.os src/gradient.os src/parse_path.os src/image_reader.os src/cairo_io.os src/image.os src/image_view.os src/image_view_any.os src/image_any.os src/image_options.os src/image_util.os src/image_util_jpeg.os src/image_util_png.os src/image_util_tiff.os src/image_util_webp.os src/layer.os src/map.os src/load_map.os src/memory.os src/palette.os src/marker_helpers.os src/transform_expression_grammar.os src/geometry_envelope.os src/plugin.os src/rule.os src/save_map.os src/wkb.os src/projection.os src/proj_transform.os src/scale_denominator.os src/simplify.os src/parse_transform.os src/memory_datasource.os src/symbolizer.os src/symbolizer_keys.os src/symbolizer_enumerations.os src/unicode.os src/raster_colorizer.os src/mapped_memory_cache.os src/marker_cache.os src/svg/svg_parser.os src/svg/svg_path_parser.os src/svg/svg_points_parser.os src/svg/svg_transform_parser.os src/warp.os src/css_color_grammar.os src/vertex_cache.os src/text/font_library.os src/text/text_layout.os src/text/text_line.os src/text/itemizer.os src/text/scrptrun.os src/text/face.os src/text/glyph_positions.os src/text/placement_finder.os src/text/properties_util.os src/text/renderer.os src/text/symbolizer_helpers.os src/text/text_properties.os src/text/font_feature_settings.os src/text/formatting/base.os src/text/formatting/list.os src/text/formatting/text.os src/text/formatting/format.os src/text/formatting/layout.os src/text/formatting/registry.os src/text/placements/registry.os src/text/placements/base.os src/text/placements/dummy.os src/text/placements/list.os src/text/placements/simple.os src/group/group_layout_manager.os src/group/group_rule.os src/group/group_symbolizer_helper.os src/xml_tree.os src/config_error.os src/color_factory.os src/renderer_common.os src/renderer_common/render_pattern.os src/renderer_common/process_group_symbolizer.os src/math.os src/cairo/process_markers_symbolizer.os src/cairo/process_group_symbolizer.os src/cairo/cairo_context.os src/cairo/cairo_renderer.os src/cairo/cairo_render_vector.os src/cairo/process_text_symbolizer.os src/cairo/process_line_symbolizer.os src/cairo/process_line_pattern_symbolizer.os src/cairo/process_polygon_symbolizer.os src/cairo/process_polygon_pattern_symbolizer.os src/cairo/process_debug_symbolizer.os src/cairo/process_point_symbolizer.os src/cairo/process_raster_symbolizer.os src/cairo/process_building_symbolizer.os src/png_reader.os src/tiff_reader.os src/webp_reader.os src/jpeg_reader.os src/agg/agg_renderer.os src/agg/process_dot_symbolizer.os src/agg/process_building_symbolizer.os src/agg/process_line_symbolizer.os src/agg/process_line_pattern_symbolizer.os src/agg/process_text_symbolizer.os src/agg/process_point_symbolizer.os src/agg/process_polygon_symbolizer.os src/agg/process_polygon_pattern_symbolizer.os src/agg/process_raster_symbolizer.os src/agg/process_shield_symbolizer.os src/agg/process_markers_symbolizer.os src/agg/process_group_symbolizer.os src/agg/process_debug_symbolizer.os deps/clipper/src/clipper.os src/grid/process_markers_symbolizer.os src/grid/process_group_symbolizer.os src/grid/grid.os src/grid/grid_renderer.os src/grid/process_building_symbolizer.os src/grid/process_line_pattern_symbolizer.os src/grid/process_line_symbolizer.os src/grid/process_point_symbolizer.os src/grid/process_polygon_pattern_symbolizer.os src/grid/process_polygon_symbolizer.os src/grid/process_raster_symbolizer.os src/grid/process_shield_symbolizer.os src/grid/process_text_symbolizer.os src/libxml2_loader.os -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -lproj -ltiff -lwebp -lxml2 -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -lpthread -lc++ -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/crtendS.o /usr/lib/crtn.o

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants