On 03/03/2016 04:34 PM, Oron Peled wrote:
Hi,
On Wednesday 02 March 2016 15:14:11 sean darcy wrote:
Building dahdi-tools 2.11.1:
gcc -DHAVE_CONFIG_H -I. -g -Wall -O2
-I/home/asterisk/rpmbuild/BUILD/dahdi-tools-2.11.1/include -c -o
fxstest.o fxstest.c
/bin/sh ./libtool --tag=CC --mode=link gcc -g -Wall -O2
-I/home/asterisk/rpmbuild/BUILD/dahdi-tools-2.11.1/include
-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -o fxstest
fxstest.o libtonezone.la -lpthread -lm
libtool: link: gcc -g -Wall -O2
-I/home/asterisk/rpmbuild/BUILD/dahdi-tools-2.11.1/include -Wl,-z
-Wl,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -o .libs/fxstest
fxstest.o ./.libs/libtonezone.so -lpthread -lm -Wl,-rpath -Wl,/usr/lib64
/usr/bin/ld: fxstest.o: relocation R_X86_64_32 against `.rodata.str1.1'
can not be used when making a shared object; recompile with -fPIC
Even though:
+ CFLAGS='-O2 -march=native -mtune=native -ftree-vectorize -ffast-math
-fPIC'
+ export CFLAGS
+ CXXFLAGS='-O2 -march=native -mtune=native -ftree-vectorize -ffast-math
-fPIC'
+ export CXXFLAGS
because CFLAGS doesn't override the Makefile CFLAGS. Notice no -fPIC above.
OK, this is my bad:
* The fix to Makefile.am is to replace the first CFLAGS assignment from "=" to
"+="
* Also note that CFLAGS should be passed to ./configure and not make (as
"./configure --help" nicely mention).
Here is a patch:
diff --git a/Makefile.am b/Makefile.am
index d43ce91..9dd64b2 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,7 @@ LEGACY_MAKE = \
top_srcdir=$(top_srcdir) \
srcdir=$(srcdir)
-CFLAGS = -g -Wall -O2 $(DAHDI_INCLUDE)
+CFLAGS += -g -Wall -O2 $(DAHDI_INCLUDE)
if DAHDI_DEVMODE
CFLAGS += \
-Werror \
The fix: add -fPIC to CFLAGS in Makefile.am, ./bootstrap.sh, build.
Normally, "-fPIC" isn't needed when linking an executable (only on shared
objects).
Can you share more info about the build environment?
* Linux distribution and version (some redhat?)
* Primary tools versions (e.g: the output of "rpm -q rpm -q gcc make libtool
automake autoconf rpm")
* Extra stuff? maybe building an RPM? (which adds some extra
distribution-specific CFLAGS, etc.)
The reason, is that I didn't encounter this failure either with/without "-fPIC"
and I'd like to try and re-create it.
Thanks for the report,
Thanks for the quick response.
Running standard Fedora 23.
rpm -q gcc make libtool automake autoconf rpm | sort
autoconf-2.69-21.fc23.noarch
automake-1.15-4.fc23.noarch
gcc-5.3.1-2.fc23.x86_64
libtool-2.4.6-8.fc23.x86_64
make-4.0-5.1.fc23.x86_64
rpm-4.13.0-0.rc1.12.fc23.x86_64
Here's the bootstrap and configure in the rpm build:
+ cd dahdi-tools-2.11.1
+ ./bootstrap.sh
Generating the configure script ...
+ CFLAGS='-O2 -march=native -mtune=native -ftree-vectorize -ffast-math
-fPIC'
+ export CFLAGS
+ CXXFLAGS='-O2 -march=native -mtune=native -ftree-vectorize -ffast-math
-fPIC'
+ export CXXFLAGS
+ FFLAGS='-O2 -march=native -mtune=native -ftree-vectorize -ffast-math
-fPIC -I/usr/lib64/gfortran/modules'
+ export FFLAGS
+ FCFLAGS='-O2 -march=native -mtune=native -ftree-vectorize -ffast-math
-fPIC -I/usr/lib64/gfortran/modules'
+ export FCFLAGS
+ LDFLAGS='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld'
+ export LDFLAGS
+ '[' 1 = 1 ']'
+++ dirname ./configure
++ find . -name config.guess -o -name config.sub
+ for i in '$(find $(dirname ./configure) -name config.guess -o -name
config.sub)'
++ basename ./auxdir/config.guess
+ '[' -f /usr/lib/rpm/redhat/config.guess ']'
+ /usr/bin/rm -f ./auxdir/config.guess
++ basename ./auxdir/config.guess
+ /usr/bin/cp -fv /usr/lib/rpm/redhat/config.guess ./auxdir/config.guess
'/usr/lib/rpm/redhat/config.guess' -> './auxdir/config.guess'
+ for i in '$(find $(dirname ./configure) -name config.guess -o -name
config.sub)'
++ basename ./auxdir/config.sub
+ '[' -f /usr/lib/rpm/redhat/config.sub ']'
+ /usr/bin/rm -f ./auxdir/config.sub
++ basename ./auxdir/config.sub
+ /usr/bin/cp -fv /usr/lib/rpm/redhat/config.sub ./auxdir/config.sub
'/usr/lib/rpm/redhat/config.sub' -> './auxdir/config.sub'
+ '[' 1 = 1 ']'
+ '[' x '!=' x-specs=/usr/lib/rpm/redhat/redhat-hardened-ld ']'
++ find . -name ltmain.sh
+ for i in '$(find . -name ltmain.sh)'
+ /usr/bin/sed -i.backup -e
's~compiler_flags=$~compiler_flags="-specs=/usr/lib/rpm/redhat/redhat-hardened-ld"~'
./auxdir/ltmain.sh
++ pwd
+ ./configure --build=x86_64-redhat-linux-gnu
--host=x86_64-redhat-linux-gnu --program-prefix=
--disable-dependency-tracking --prefix=/usr --exec-prefix=/usr
--bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc
--datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64
--libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib
--mandir=/usr/share/man --infodir=/usr/share/info
--with-dahdi=/home/asterisk/rpmbuild/BUILD/dahdi-tools-2.11.1
...................
FWIW, if -fPIC is not in CFLAGS the .configure compiler check fails:
........
configure:3875: checking whether we are cross compiling
configure:3883: gcc -o conftest -O2 -march=native -mtune=native
-ftree-vectorize -ffast-math -Wl,-z,relro
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld conftest.c >&5
/usr/bin/ld: /tmp/cciqZ1hg.o: relocation R_X86_64_32 against
`.rodata.str1.1' can not be used when making a shared object; recompile
with -fPIC
/tmp/cciqZ1hg.o: error adding symbols: Bad value
Thanks,
sean
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-dev