Your message dated Wed, 26 Jul 2017 12:21:07 +0300 with message-id <20170726092107.y5agpcgzm52dnrqv@localhost> and subject line Re: Bug#869735: libjson-c2 static library (libjson-c.a) is created using the wrong object files. has caused the Debian Bug report #869735, regarding libjson-c2 static library (libjson-c.a) is created using the wrong object files. to be marked as done.
This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact [email protected] immediately.) -- 869735: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=869735 Debian Bug Tracking System Contact [email protected] with problems
--- Begin Message ---Package: libjson-c2 Source: libjson-c2 Version: 0.11-4ubuntu2 I'm working on a cross platform project that is using libjson-c2 and I wanted to try to statically link the library to see if I could avoid shipping multiple deb packages for, for example, 16.04 and 17.04, where the libraries are different (libjson-c2 vs libjson-c3). What I found was that I couldn't link with the static library libjson-c.a. When I tried I got the following error: cc -pie -fPIE -z relro -z now -o myapp myapp.o -static -ljson-c /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginT.o: error adding symbols: Bad value collect2: error: ld returned 1 exit status Makefile:89: recipe for target 'myapp' failed I downloaded the package sources and found that the .c files are being compiled twice, once without -fPIC, with the resultant .o files in the top level directory, and once with -fPIC, with the resultant .o files deposited in the .libs directory, which is where the .a is created. However, the .a is NOT created with the .libs/*.o files, but the top level .o files, which are NOT created with -fPIC. See the following lines from the build log: libtool: link: (cd ".libs" && rm -f "libjson-c.so.2" && ln -s "libjson-c.so.2.0.0" "libjson-c.so.2") libtool: link: (cd ".libs" && rm -f "libjson-c.so" && ln -s "libjson-c.so.2.0.0" "libjson-c.so") libtool: link: ar cru .libs/libjson-c.a arraylist.o debug.o json_c_version.o json_object.o json_object_iterator.o json_tokener.o json_util.o linkhash.o printbuf.o random_seed.o libtool: link: ranlib .libs/libjson-c.a Note that the library is .libs/libjson-c.a but the .o files don't have the .libs prefix. If I cd into the .libs directory and execute these commands: ar cru libjson-c.a arraylist.o debug.o json_c_version.o json_object.o json_object_iterator.o json_tokener.o json_util.o linkhash.o printbuf.o random_seed.o ranlib libjson-c.a and then link with the resultant library everything works. I haven't been able to figure out exactly what the fix for this problem is. The following is the information for both the installed package and the source package that I've been working with. $ dpkg --status libjson-c2 Package: libjson-c2 Status: install ok installed Priority: extra Section: libs Installed-Size: 67 Maintainer: Ubuntu Developers <[email protected]<mailto:[email protected]>> Architecture: amd64 Multi-Arch: same Source: json-c Version: 0.11-4ubuntu2 Depends: libc6 (>= 2.14) Description: JSON manipulation library - shared library This library allows you to easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into the C representation of JSON objects. Homepage: https://github.com/json-c/json-c/wiki Original-Maintainer: fabien boucher <[email protected]<mailto:[email protected]>> Source package info: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 3.0 (quilt) Source: json-c Binary: libjson-c2, libjson-c-dev, libjson-c2-dbg, libjson-c-doc, libjson0-dev, libjson0 Architecture: any all Version: 0.11-4ubuntu2 Maintainer: Ubuntu Developers <[email protected]<mailto:[email protected]>> Uploaders: Ond�~Yej Surý <[email protected]<mailto:[email protected]>> Homepage: https://github.com/json-c/json-c/wiki Standards-Version: 3.9.3.0 Vcs-Browser: http://anonscm.debian.org/?p=collab-maint/json-c.git;a=summary Vcs-Git: git://anonscm.debian.org/git/collab-maint/json-c Build-Depends: debhelper (>= 9), dh-exec, dh-autoreconf Package-List: libjson-c-dev deb libdevel extra arch=any libjson-c-doc deb doc extra arch=all libjson-c2 deb libs extra arch=any libjson-c2-dbg deb debug extra arch=any libjson0 deb oldlibs extra arch=any libjson0-dev deb oldlibs extra arch=any Checksums-Sha1: 5d0377d2cc4a1af324d5aeb5b63032d1d026aacd 557263 json-c_0.11.orig.tar.gz c93b8000bc69549bf708de0073f0fcae0648c7af 273884 json-c_0.11-4ubuntu2.debian.tar.xz Checksums-Sha256: 28dfc65145dc0d4df1dfe7701ac173c4e5f9347176c8983edbfac9149494448c 557263 json-c_0.11.orig.tar.gz 96cce11fbf46e57c5b2674922344738c6f2ea1fa0af6e91b3576eb9f1dbd51d0 273884 json-c_0.11-4ubuntu2.debian.tar.xz Files: aa02367d2f7a830bf1e3376f77881e98 557263 json-c_0.11.orig.tar.gz f88770f98c00242150f189695af295a4 273884 json-c_0.11-4ubuntu2.debian.tar.xz Original-Maintainer: fabien boucher <[email protected]<mailto:[email protected]>> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlSz8/4ACgkQDTAwc5ER+zVkygCfdx9sPn9kvEB5p2Iagg4JSAx4 dRgAoICbAWoQ6td7VAn7oN/OAVqyt9xR =OtuB -----END PGP SIGNATURE----- uname -a Linux desktop 4.4.0-28-generic #47-Ubuntu SMP Fri Jun 24 10:09:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
--- End Message ---
--- Begin Message ---On Tue, Jul 25, 2017 at 10:42:00PM +0000, Alan Amaral wrote: > Package: libjson-c2 > Source: libjson-c2 > Version: 0.11-4ubuntu2 >... Please report problems on Ubuntu to Ubuntu, not Debian. > cc -pie -fPIE -z relro -z now -o myapp myapp.o -static -ljson-c > /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginT.o: relocation > R_X86_64_32 against `__TMC_END__' can not be used when making a shared > object; recompile with -fPIC > /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginT.o: error adding symbols: Bad value > collect2: error: ld returned 1 exit status > Makefile:89: recipe for target 'myapp' failed >... You are trying to create a PIE executable (-pie) that includes a non-PIE static library. That's expected to fail. (It works with a shared library that is PIC.) cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed
--- End Message ---

