View Issue Details

IDProjectCategoryView StatusLast Update
0002405GNUnetbuild processpublic2012-11-05 18:34
Reporterneverpanic Assigned ToChristian Grothoff  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
PlatformApple Mac OS X, MacPortsOSOS XOS Version10.7.4
Product Version0.9.3 
Target Version0.9.4Fixed in Version0.9.4 
Summary0002405: Linking against libintl fails, because Makefile.am doesn't list $(LTLIBINTL) in libraryname_la_LIBADD
DescriptionLinking of several components of gnunet fails on OS X, because symbols from libintl cannot be found, as those require "-lintl" to be found on OS X. AM_GNU_GETTEXT in configure.ac already checks whether this is needed and adds the necessary flags in non-libtool form to $LIBINTL and in libtool form to $LTLIBINTL (see http://www.gnu.org/software/gettext/manual/html_node/AM_005fGNU_005fGETTEXT.html).

The error messages caused look like this:
libtool: link: /usr/bin/clang -dynamiclib -o .libs/libgnunetutil.8.dylib .libs/bandwidth.o .libs/bio.o .libs/client.o .libs/common_allocation.o .libs/common_endian.o .libs/common_logging.o .libs/configuration.o .libs/connection.o .libs/container_bloomfilter.o .libs/container_heap.o .libs/container_meta_data.o .libs/container_multihashmap.o .libs/container_slist.o .libs/crypto_aes.o .libs/crypto_crc.o .libs/crypto_hash.o .libs/crypto_hkdf.o .libs/crypto_kdf.o .libs/crypto_ksk.o .libs/crypto_random.o .libs/crypto_rsa.o .libs/disk.o .libs/getopt.o .libs/getopt_helpers.o .libs/helper.o .libs/load.o .libs/network.o .libs/os_installation.o .libs/os_network.o .libs/os_priority.o .libs/peer.o .libs/plugin.o .libs/program.o .libs/pseudonym.o .libs/resolver_api.o .libs/scheduler.o .libs/server.o .libs/server_mst.o .libs/server_nc.o .libs/server_tc.o .libs/service.o .libs/signal.o .libs/strings.o .libs/time.o .libs/speedup.o -L/opt/local/lib /opt/local/lib/libgcrypt.dylib /opt/local/lib/libgpg-error.dylib /opt/local/lib/libiconv.dylib /opt/local/lib/libltdl.dylib -lz /opt/local/lib/libunistring.dylib -lm -install_name /usr/local/lib/libgnunetutil.8.dylib -compatibility_version 9 -current_version 9.0 -Wl,-single_module
Undefined symbols for architecture x86_64:
  "_libintl_dgettext", referenced from:
      _GNUNET_BIO_read in bio.o
      _GNUNET_BIO_read_string in bio.o
      _GNUNET_BIO_read_meta_data in bio.o
      _GNUNET_BIO_write in bio.o
      _do_connect in client.o
      _GNUNET_CLIENT_notify_transmit_ready_cancel in client.o
      _GNUNET_CLIENT_receive in client.o
      ...
  "_libintl_gettext", referenced from:
      _GNUNET_GETOPT_format_help_ in getopt_helpers.o
  "_libintl_setlocale", referenced from:
      _GNUNET_PROGRAM_run2 in program.o
  "_libintl_bindtextdomain", referenced from:
      _GNUNET_PROGRAM_run2 in program.o
  "_libintl_textdomain", referenced from:
      _GNUNET_PROGRAM_run2 in program.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [libgnunetutil.la] Error 1

The attached patch fixes all occurrences of this problem that failed for me.
Steps To Reproduce1. install libextractor (currently 0.6.2) and libunistring (
currently 0.9.3) from MacPorts
2. ./configure CC=/usr/bin/clang CPPFLAGS="-I/opt/local/include" LDFLAGS="-L/opt/local/lib" (/opt/local is the MacPorts prefix)
3. make
TagsNo tags attached.
Attached Files
missing-ltlibintl.patch (11,372 bytes)   
--- ./src/ats/Makefile.am.orig	2012-06-06 23:31:27.000000000 +0200
+++ ./src/ats/Makefile.am	2012-06-06 23:31:38.000000000 +0200
@@ -28,7 +28,8 @@
   ats_api_performance.c 
 
 libgnunetats_la_LIBADD = \
- $(top_builddir)/src/util/libgnunetutil.la
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(LTLIBINTL)
 
 libgnunetats_la_LDFLAGS = \
  $(GN_LIB_LDFLAGS) \
--- ./src/block/Makefile.am.orig	2012-06-06 23:16:29.000000000 +0200
+++ ./src/block/Makefile.am	2012-06-06 23:19:29.000000000 +0200
@@ -20,7 +20,8 @@
 libgnunet_plugin_block_template_la_SOURCES = \
   plugin_block_template.c
 libgnunet_plugin_block_template_la_LIBADD = \
-  $(top_builddir)/src/util/libgnunetutil.la 
+  $(top_builddir)/src/util/libgnunetutil.la \
+  $(LTLIBINTL)
 libgnunet_plugin_block_template_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 
@@ -28,7 +29,8 @@
   plugin_block_test.c
 libgnunet_plugin_block_test_la_LIBADD = \
   $(top_builddir)/src/block/libgnunetblock.la \
-  $(top_builddir)/src/util/libgnunetutil.la 
+  $(top_builddir)/src/util/libgnunetutil.la  \
+  $(LTLIBINTL)
 libgnunet_plugin_block_test_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 libgnunet_plugin_block_test_la_DEPENDENCIES = \
@@ -38,7 +40,7 @@
 libgnunetblock_la_SOURCES = \
   block.c 
 libgnunetblock_la_LIBADD = \
- $(top_builddir)/src/util/libgnunetutil.la  
+ $(top_builddir)/src/util/libgnunetutil.la
 libgnunetblock_la_DEPENDENCIES = \
  $(top_builddir)/src/util/libgnunetutil.la  
 libgnunetblock_la_LDFLAGS = \
--- ./src/datacache/Makefile.am.orig	2012-06-06 23:23:26.000000000 +0200
+++ ./src/datacache/Makefile.am	2012-06-06 23:24:46.000000000 +0200
@@ -51,7 +51,8 @@
   plugin_datacache_sqlite.c
 libgnunet_plugin_datacache_sqlite_la_LIBADD = \
   $(top_builddir)/src/statistics/libgnunetstatistics.la \
-  $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3
+  $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3 \
+  $(LTLIBINTL)
 libgnunet_plugin_datacache_sqlite_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 
@@ -82,7 +83,8 @@
 libgnunet_plugin_datacache_template_la_SOURCES = \
   plugin_datacache_template.c
 libgnunet_plugin_datacache_template_la_LIBADD = \
-  $(top_builddir)/src/util/libgnunetutil.la $(XLIBS)
+  $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) \
+  $(LTLIBINTL)
 libgnunet_plugin_datacache_template_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 
--- ./src/datastore/Makefile.am.orig	2012-06-06 23:26:43.000000000 +0200
+++ ./src/datastore/Makefile.am	2012-06-06 23:28:10.000000000 +0200
@@ -92,7 +92,8 @@
   plugin_datastore_sqlite.c
 libgnunet_plugin_datastore_sqlite_la_LIBADD = \
   $(top_builddir)/src/statistics/libgnunetstatistics.la \
-  $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3
+  $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3 \
+  $(LTLIBINTL)
 libgnunet_plugin_datastore_sqlite_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 
@@ -123,7 +124,8 @@
 libgnunet_plugin_datastore_template_la_SOURCES = \
   plugin_datastore_template.c
 libgnunet_plugin_datastore_template_la_LIBADD = \
-  $(top_builddir)/src/util/libgnunetutil.la $(XLIBS)
+  $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) \
+  $(LTLIBINTL)
 libgnunet_plugin_datastore_template_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 
@@ -233,4 +235,4 @@
  perf_plugin_datastore_data_postgres.conf \
  test_plugin_datastore_data_mysql.conf \
  test_plugin_datastore_data_postgres.conf \
- test_plugin_datastore_data_sqlite.conf
\ No newline at end of file
+ test_plugin_datastore_data_sqlite.conf
--- ./src/dht/Makefile.am.orig	2012-06-06 23:55:53.000000000 +0200
+++ ./src/dht/Makefile.am	2012-06-06 23:58:42.000000000 +0200
@@ -26,7 +26,8 @@
   dht_api.c dht.h 
 libgnunetdht_la_LIBADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
-  $(XLIB)
+  $(XLIB) \
+  $(LTLIBINTL)
 libgnunetdht_la_LDFLAGS = \
   $(GN_LIB_LDFLAGS) $(WINFLAGS) \
   -version-info 1:0:1
@@ -40,7 +41,8 @@
 libgnunet_plugin_block_dht_la_LIBADD = \
   $(top_builddir)/src/hello/libgnunethello.la \
   $(top_builddir)/src/block/libgnunetblock.la \
-  $(top_builddir)/src/util/libgnunetutil.la 
+  $(top_builddir)/src/util/libgnunetutil.la \
+  $(LTLIBINTL)
 libgnunet_plugin_block_dht_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 libgnunet_plugin_block_dht_la_DEPENDENCIES = \
--- ./src/fragmentation/Makefile.am.orig	2012-06-06 23:32:36.000000000 +0200
+++ ./src/fragmentation/Makefile.am	2012-06-06 23:32:46.000000000 +0200
@@ -15,7 +15,8 @@
   defragmentation.c 
 libgnunetfragmentation_la_LIBADD = -lm \
  $(top_builddir)/src/statistics/libgnunetstatistics.la \
- $(top_builddir)/src/util/libgnunetutil.la  
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(LTLIBINTL)
 libgnunetfragmentation_la_LDFLAGS = \
  $(GN_LIB_LDFLAGS) \
   -version-info 1:0:1
@@ -33,4 +34,4 @@
  $(top_builddir)/src/fragmentation/libgnunetfragmentation.la \
  $(top_builddir)/src/util/libgnunetutil.la  
 
-EXTRA_DIST = test_fragmentation_data.conf
\ No newline at end of file
+EXTRA_DIST = test_fragmentation_data.conf
--- ./src/fs/Makefile.am.orig	2012-06-07 00:00:12.000000000 +0200
+++ ./src/fs/Makefile.am	2012-06-07 00:00:23.000000000 +0200
@@ -177,7 +177,8 @@
   plugin_block_fs.c
 libgnunet_plugin_block_fs_la_LIBADD = \
   $(top_builddir)/src/block/libgnunetblock.la \
-  $(top_builddir)/src/util/libgnunetutil.la 
+  $(top_builddir)/src/util/libgnunetutil.la \
+  $(LTLIBINTL)
 libgnunet_plugin_block_fs_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 libgnunet_plugin_block_fs_la_DEPENDENCIES = \
--- ./src/hello/Makefile.am.orig	2012-06-06 23:01:01.000000000 +0200
+++ ./src/hello/Makefile.am	2012-06-06 23:01:09.000000000 +0200
@@ -14,7 +14,8 @@
 libgnunethello_la_SOURCES = \
   hello.c address.c
 libgnunethello_la_LIBADD = \
- $(top_builddir)/src/util/libgnunetutil.la $(XLIB)
+ $(top_builddir)/src/util/libgnunetutil.la $(XLIB) \
+ $(LTLIBINTL)
 libgnunethello_la_LDFLAGS = \
   $(GN_LIB_LDFLAGS) \
   -version-info 0:0:0
--- ./src/lockmanager/Makefile.am.orig	2012-06-07 00:03:15.000000000 +0200
+++ ./src/lockmanager/Makefile.am	2012-06-07 00:03:26.000000000 +0200
@@ -32,7 +32,8 @@
   lockmanager_api.c lockmanager.h
 libgnunetlockmanager_la_LIBADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
-  $(XLIB)
+  $(XLIB) \
+  $(LTLIBINTL)
 libgnunetlockmanager_la_LDFLAGS = \
   $(GN_LIB_LDFLAGS) $(WINFLAGS) \
   -version-info 0:0:0
@@ -65,4 +66,4 @@
   test_lockmanager_api_servercrash.c
 test_lockmanager_api_servercrash_LDADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
-  libgnunetlockmanager.la
\ No newline at end of file
+  libgnunetlockmanager.la
--- ./src/mesh/Makefile.am.orig	2012-06-07 00:01:57.000000000 +0200
+++ ./src/mesh/Makefile.am	2012-06-07 00:02:10.000000000 +0200
@@ -38,7 +38,8 @@
   mesh_api.c mesh.h mesh_protocol.h
 libgnunetmesh_la_LIBADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
-  $(XLIB)
+  $(XLIB) \
+  $(LTLIBINTL)
 libgnunetmesh_la_LDFLAGS = \
   $(GN_LIB_LDFLAGS) $(WINFLAGS) \
   -version-info 1:0:0
--- ./src/namestore/Makefile.am.orig	2012-06-06 23:29:57.000000000 +0200
+++ ./src/namestore/Makefile.am	2012-06-06 23:30:15.000000000 +0200
@@ -99,7 +99,8 @@
 libgnunet_plugin_namestore_sqlite_la_LIBADD = \
   $(top_builddir)/src/namestore/libgnunetnamestore.la  \
   $(top_builddir)/src/statistics/libgnunetstatistics.la \
-  $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3
+  $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3 \
+  $(LTLIBINTL)
 libgnunet_plugin_namestore_sqlite_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 libgnunet_plugin_namestore_sqlite_la_DEPENDENCIES = \
--- ./src/peerinfo/Makefile.am.orig	2012-06-06 23:21:18.000000000 +0200
+++ ./src/peerinfo/Makefile.am	2012-06-06 23:21:27.000000000 +0200
@@ -22,7 +22,8 @@
 libgnunetpeerinfo_la_LIBADD = \
   $(top_builddir)/src/hello/libgnunethello.la \
   $(top_builddir)/src/util/libgnunetutil.la \
-  $(XLIB)
+  $(XLIB) \
+  $(LTLIBINTL)
 libgnunetpeerinfo_la_LDFLAGS = \
   $(GN_LIB_LDFLAGS) $(WINFLAGS) \
   -version-info 0:0:0
--- ./src/testbed/Makefile.am.orig	2012-06-06 23:50:27.000000000 +0200
+++ ./src/testbed/Makefile.am	2012-06-06 23:50:39.000000000 +0200
@@ -32,7 +32,8 @@
  $(top_builddir)/src/transport/libgnunettransport.la \
  $(top_builddir)/src/hello/libgnunethello.la \
  -lm \
- $(top_builddir)/src/util/libgnunetutil.la 
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(LTLIBINTL)
 libgnunettestbed_la_LDFLAGS = \
  $(GN_LIB_LDFLAGS) \
  -version-info 0:0:0
--- ./src/testing/Makefile.am.orig	2012-06-06 23:38:14.000000000 +0200
+++ ./src/testing/Makefile.am	2012-06-06 23:38:37.000000000 +0200
@@ -48,7 +48,8 @@
  $(top_builddir)/src/transport/libgnunettransport.la \
  $(top_builddir)/src/hello/libgnunethello.la \
  -lm \
- $(top_builddir)/src/util/libgnunetutil.la 
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(LTLIBINTL)
 libgnunettesting_la_LDFLAGS = \
  $(GN_LIB_LDFLAGS) \
  -version-info 0:1:0
@@ -57,7 +58,8 @@
 libgnunettesting_new_la_SOURCES = \
   testing_new.c  
 libgnunettesting_new_la_LIBADD = \
- $(top_builddir)/src/util/libgnunetutil.la 
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(LTLIBINTL)
 libgnunettesting_new_la_LDFLAGS = \
  $(GN_LIB_LDFLAGS) \
  -version-info 0:1:0
--- ./src/transport/Makefile.am.orig	2012-06-06 23:33:58.000000000 +0200
+++ ./src/transport/Makefile.am	2012-06-06 23:36:53.000000000 +0200
@@ -165,14 +165,16 @@
   $(top_builddir)/src/statistics/libgnunetstatistics.la \
   $(top_builddir)/src/peerinfo/libgnunetpeerinfo.la \
   $(top_builddir)/src/nat/libgnunetnat.la \
-  $(top_builddir)/src/util/libgnunetutil.la 
+  $(top_builddir)/src/util/libgnunetutil.la \
+  $(LTLIBINTL)
 libgnunet_plugin_transport_tcp_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 
 libgnunet_plugin_transport_template_la_SOURCES = \
   plugin_transport_template.c
 libgnunet_plugin_transport_template_la_LIBADD = \
-  $(top_builddir)/src/util/libgnunetutil.la 
+  $(top_builddir)/src/util/libgnunetutil.la \
+  $(LTLIBINTL)
 libgnunet_plugin_transport_template_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 
@@ -196,7 +198,8 @@
   $(top_builddir)/src/statistics/libgnunetstatistics.la \
   $(top_builddir)/src/peerinfo/libgnunetpeerinfo.la \
   $(top_builddir)/src/nat/libgnunetnat.la \
-  $(top_builddir)/src/util/libgnunetutil.la 
+  $(top_builddir)/src/util/libgnunetutil.la \
+  $(LTLIBINTL)
 libgnunet_plugin_transport_udp_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 
@@ -206,7 +209,8 @@
   $(top_builddir)/src/hello/libgnunethello.la \
   $(top_builddir)/src/statistics/libgnunetstatistics.la \
   $(top_builddir)/src/peerinfo/libgnunetpeerinfo.la \
-  $(top_builddir)/src/util/libgnunetutil.la 
+  $(top_builddir)/src/util/libgnunetutil.la \
+  $(LTLIBINTL)
 libgnunet_plugin_transport_unix_la_LDFLAGS = \
  $(GN_PLUGIN_LDFLAGS)
 
--- ./src/tun/Makefile.am.orig	2012-06-06 23:13:10.000000000 +0200
+++ ./src/tun/Makefile.am	2012-06-06 23:13:19.000000000 +0200
@@ -14,7 +14,8 @@
 libgnunettun_la_SOURCES = \
   tun.c
 libgnunettun_la_LIBADD = \
- $(top_builddir)/src/util/libgnunetutil.la $(XLIB)
+ $(top_builddir)/src/util/libgnunetutil.la $(XLIB) \
+ $(LTLIBINTL)
 libgnunettun_la_LDFLAGS = \
   $(GN_LIB_LDFLAGS) \
   -version-info 0:0:0
--- ./src/util/Makefile.am.orig	2012-06-06 23:01:38.000000000 +0200
+++ ./src/util/Makefile.am	2012-06-06 23:01:45.000000000 +0200
@@ -107,6 +107,7 @@
   $(GCLIBADD) $(WINLIB) \
   $(LIBGCRYPT_LIBS) \
   $(LTLIBICONV) \
+  $(LTLIBINTL) \
   -lltdl -lz -lunistring $(XLIB) 
 
 libgnunetutil_la_LDFLAGS = \
missing-ltlibintl.patch (11,372 bytes)   

Activities

Christian Grothoff

2012-06-07 09:32

manager   ~0006005

Patched as suggested in SVN 21795. Thanks!

Issue History

Date Modified Username Field Change
2012-06-07 00:09 neverpanic New Issue
2012-06-07 00:09 neverpanic File Added: missing-ltlibintl.patch
2012-06-07 09:17 Christian Grothoff Status new => assigned
2012-06-07 09:17 Christian Grothoff Target Version => 0.9.4
2012-06-07 09:32 Christian Grothoff Note Added: 0006005
2012-06-07 09:32 Christian Grothoff Status assigned => resolved
2012-06-07 09:32 Christian Grothoff Fixed in Version => 0.9.4
2012-06-07 09:32 Christian Grothoff Resolution open => fixed
2012-06-07 09:32 Christian Grothoff Assigned To => Christian Grothoff
2012-11-05 18:34 Christian Grothoff Status resolved => closed