hyperrealm / libconfig

C/C++ library for processing configuration files
https://hyperrealm.github.io/libconfig/
GNU Lesser General Public License v2.1
1.1k stars 359 forks source link

make libconfig in ubuntu:16.04 docker container #194

Closed motognere closed 3 years ago

motognere commented 3 years ago

Hi,

The issue doesn't occur if building libconfig in normal Ubuntu 16.04 system, except when I'm trying to build and install it in a docker container.

make  all-recursive
make[1]: Entering directory '/libconfig-1.4.5'
Making all in lib
make[2]: Entering directory '/libconfig-1.4.5/lib'
make  all-am
make[3]: Entering directory '/libconfig-1.4.5/lib'
/bin/bash ../libtool --tag=CXX   --mode=link g++  -g -O2 -Wall -Wshadow -version-info 9:4:0 -no-undefined  -o libconfig++.la -rpath /usr/local/lib libconfig___la-libconfig.lo libconfig___la-scanner.lo libconfig___la-grammar.lo libconfig___la-scanctx.lo libconfig___la-strbuf.lo libconfig___la-libconfigcpp.lo  
libtool: link: g++ -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginS.o  .libs/libconfig___la-libconfig.o .libs/libconfig___la-scanner.o .libs/libconfig___la-grammar.o .libs/libconfig___la-scanctx.o .libs/libconfig___la-strbuf.o .libs/libconfig___la-libconfigcpp.o   -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/5/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o    -Wl,-soname -Wl,libconfig++.so.9 -o .libs/libconfig++.so.9.0.4
/usr/bin/ld: .libs/libconfig___la-libconfigcpp.o: relocation R_X86_64_32 against `_ZTVN9libconfig14ParseExceptionE' can not be used when making a shared object; recompile with -fPIC
.libs/libconfig___la-libconfigcpp.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Makefile:386: recipe for target 'libconfig++.la' failed
make[3]: *** [libconfig++.la] Error 1
make[3]: Leaving directory '/libconfig-1.4.5/lib'
Makefile:311: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/libconfig-1.4.5/lib'
Makefile:331: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/libconfig-1.4.5'
Makefile:258: recipe for target 'all' failed
make: *** [all] Error 2

I suppose there probably some dependency missing in the Ubuntu in docker container? Look forward to any help.

Thanks.

Originally posted by @motognere in https://github.com/hyperrealm/libconfig/issues/145#issuecomment-839395009

motognere commented 3 years ago

The issue was fixed simply by run make clean before make.